如何使用IP地址和端口号连接到服务器套接字(客户端在与服务器不同的机器上运行)

客户端程序

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(){ } } 

服务器端程序

 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); } 

我如何使用IP地址和端口号连接到服务器套接字(客户端运行在与服务器不同的机器上)当我将客户端中的server_IP更改为“本地主机”时,它完美地工作任何帮助将不胜感激。

要连接您的代码,请使用:

 Socket socket = new Socket(server_IP,server_Port); 

所以你可以使用:

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

看起来你的代码中有这个,所以我不确定你遇到了什么问题。

不要忘记,如果路由器位于本地网络之外,则必须将路由器设置为转发端口。

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

不要忘记,如果您正在运行防火墙,这也会干扰连接。

更新/ etc / hosts
添加以下行

127.0.1.1 192.168.10.109