【发布时间】:2015-05-17 04:22:09
【问题描述】:
我无法使用以下客户端服务器程序通过同一网络连接两台不同的机器。
然而,代码在同一台机器上运行良好。
我认为在客户端程序中它在socket.accept() 之前进入无限循环;
请提出可能的解决方案。
server.java
import java.io.*;
import java.net.*;
import java.lang.*;
class server{
public static void main(String args[]){
try{
int one,zero;
one=zero=0;
ServerSocket sock=new ServerSocket(2000);
Socket soc=sock.accept();
DataInputStream dis=new DataInputStream(soc.getInputStream());
System.out.println("Connection Established");
String msg =dis.readLine();
System.out.println("MESSAGE : "+msg);
for(int i=0;i<msg.length();i++){
if(msg.charAt(i)=='0')
zero++;
else
one++;
}
System.out.println("Ones are "+one);
System.out.println("Zeros are "+zero);
soc.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
client.java
import java.io.*;
import java.net.*;
class client{
public static void main(String args[]){
try{
Socket soc=new Socket("localhost",2000);//or ipv4 address for different computers
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
PrintStream pr=new PrintStream(soc.getOutputStream());
System.out.println("Enter message..");
String msg =is.readLine();
pr.println(msg);
System.out.println("YOU ENTERED.."+msg);
soc.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
【问题讨论】:
-
您是否更改了这一行:
Socket soc=new Socket("localhost",2000);与服务器 ip? -
是的。我做到了。 cmd中的ipconfig-> ipv4地址
-
检查您的防火墙设置...
-
完成。没有问题。它只是在 Socket soc=new Socket("localhost",2000);//或不同计算机的 ipv4 地址处陷入无限循环
-
客户端不会进入“无限循环”。没有循环。不要只是猜测。客户端收到异常。在您的问题中发布它和堆栈跟踪。连接的目标 IP 地址错误,服务器没有运行,或者计算机不在同一个网络上,或者彼此无法访问,或者有防火墙阻碍。
标签: java sockets networking network-programming client