how do i connect to the server socket using the ip address and port number( client is running on a different machine than server)

若如初见. 提交于 2019-12-18 04:23:36

问题


Client program

public class client implements Runnable {

protected static String server_IP = "141.117.57.42";
private static final int server_Port = 5555 ;
protected static String client_IP ;


public static void main(String[] args) throws IOException{
    final  String host = "localhost";
    int init = 0  ;

    try {
        InetAddress iAddress = InetAddress.getLocalHost();
        client_IP = iAddress.getHostAddress();
        System.out.println("Current IP address : " +client_IP);
    } catch (UnknownHostException e) {
    }

    try {System.out.println("hello1");
        Socket socket = new Socket(server_IP,server_Port);
        System.out.println("hello3");
        init = initialize(socket);

    }catch (SocketException e) {
        System.out.println("Error: Unable to connect to server port ");
    }


    if (init ==  0 ){
        System.out.println("error: Failed to initialize ");
        System.exit(0);

    }
    //Thread init_Thread = new Thread();
}
private static int initialize(Socket socket ) throws IOException{
    System.out.println("hello");
    int rt_value = 0 ;

    OutputStream os = socket.getOutputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter pw = new PrintWriter(os, true);

    System.out.println("server: " + br.readLine());
    pw.println("192.343.34.321");
   // BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));
    //String userInput = userInputBR.readLine();

    //out.println(userInput);

    socket.close();
    return rt_value = 1 ;



}
public void run(){

}
}

server side program

public class server {

protected static String server_IP ;

public static void main(String[] args) throws IOException {


    int server_Port = 5555 ;



    try {
        InetAddress iAddress = InetAddress.getLocalHost();
        server_IP = iAddress.getHostAddress();
        System.out.println("Server IP address : " +server_IP);
    } catch (UnknownHostException e) {
    }

        ServerSocket serverSocket = new ServerSocket(server_Port);


        while (true) {
            Socket socket = serverSocket.accept();

             OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os, true);
            InputStreamReader isr = new InputStreamReader(socket.getInputStream());
            pw.println("Connection confirmed ");
            BufferedReader br = new BufferedReader(isr);
            String str = br.readLine();

            pw.println("your ip address is " + str);

            pw.close();
           //socket.close();

            //System.out.println("Just said hello to:" + str);
        }

how do i connect to the server socket using the ip address and port number( client is running on a different machine than server) when i change the server_IP in client to "local host" it works perfectly any help would be appreciated.


回答1:


To connect in your code you use:

Socket socket = new Socket(server_IP,server_Port);

So you could use:

Socket socket = new Socket("192.168.1.4", 5555);

It looks like you have this in your code so I'm not sure what problem you're having.

Don't forget that you have to setup your router to forward ports if it is located outside of your local network.

http://www.wikihow.com/Set-Up-Port-Forwarding-on-a-Router

Don't forget that if you are running a firewall, this can also interfere with the connection.




回答2:


Update /etc/hosts
Add following line

127.0.1.1 192.168.10.109



来源:https://stackoverflow.com/questions/27003907/how-do-i-connect-to-the-server-socket-using-the-ip-address-and-port-number-clie

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!