کار نکردن برنامه socket از طریق اینترنت (valid ip) در جاوا

+1 رأی
میانگین بازدید روزانه 0.13267 بازدید

من یه برنامه socket نوشنم که client یه رشته ارسال می کنه به server بعد این برنامه فقط توی شبکه داخلی کار میکنه

وقتی public ip  رو به برنامه میدم کار نمی کنه , مشکل کجاست؟

برنامه client :



import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Formatter;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;


public class CHATDemo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner ipPort = new Scanner(System.in);
        System.out.println("Enter IP:");
        String ip = ipPort.nextLine();
        System.out.println("Enter PORT:");
        int port = ipPort.nextInt();
        try (Socket socket = new Socket(ip, port)) {

            Formatter fOPS = new Formatter(socket.getOutputStream());
            fOPS.format("Connected");
            fOPS.flush();
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

}

 

برنامه server :

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.SSLServerSocket;


public class CHATDemo2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner portSca = new Scanner(System.in);
        System.out.println("Enter PORT:");
        int port = portSca.nextaInt();
        try (ServerSocket serverSocket = new ServerSocket(port);
                Socket socket = serverSocket.accept()) {
            Scanner receive=new Scanner(socket.getInputStream());
            System.out.println(receive.nextLine());
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

}
سوال 5 سال قبل در تالار برنامه نویسی توسط dn47ep (33 امتیاز)
ویرایش 5 سال قبل توسط Saeed Zarinfam

1 جواب

+1 رأی
 
بهترین جواب

شما از constructor کلاس ServerSocket استفاده کرده اید و ip valid را بعنوان پارامتر constructor ارسال نکرده اید، بنابراین مقدار پیشفرض localhost برای ip در نظر گرفته می شود. برای اینکه برنامه شما به ip valid سیستم bind شود باید از کد زیر استفاده کنید:

InetAddress validP = InetAddress.getByName("192.168.1.20");
serverSocket = new ServerSocket(port, 0, validP);
جواب 5 سال قبل توسط Saeed Zarinfam (959 امتیاز)
انتخاب شده در 5 سال قبل توسط dn47ep
اون ip که ایرانسل به شما داده و گوگل هم بهتون نشون داده که مختص شما نیست. بین چندین کاربر دیگه ایرانسل share، البته اینترنت ADSL هم همینطوره مگه اینکه پول بدین و IP valid خریداری کنید. شما ip valid خریدین؟
خیلی خیلی ممنون . من فک میکردم با همین ip اشتراکی میشه اصلا نمی دونستم vail ip چیه و باید بخرم .

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.2127 بازدید
+1 رأی
2 جواب میانگین بازدید روزانه 0.21722 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.71,537 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.41,208 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.11215 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.36999 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 0.491,502 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 1.474,879 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 2.016,678 بازدید
کانال تلگرام جواب یاب
...