我正在尝试一个简单的Java程序来发送和接收数据......服务器发送数据并且客户端接收到...但这会生成Socket异常:连接重置
这是我发送Integer值的服务器端代码...
try {
ServerSocket server = new ServerSocket(9089);
Socket socket = server.accept();
OutputStream out = socket.getOutputStream();
out.write(12);
out.flush();
System.out.println("Data Sent....");
Thread.sleep(5000);
} catch(Exception e) {
System.out.println("Server Error : " + e.toString());
}
这是我的客户端代码,用于接收Int值...
try {
Socket client = new Socket(InetAddress.getLocalHost(), 9089);
System.out.println("Connected ....");
InputStream in = client.getInputStream();
while(in.available()>0)
{
System.out.println("Unavailable...");
}
System.out.println("Received : " + in.read() );
in.close();
} catch(Exception e) {
System.out.println("Sender Error : " + e.toString());
}
答案 0 :(得分:1)
在您的客户端代码中,我认为您必须更改while循环的条件:
while(in.available()==0) {
System.out.println("Unavailable...");
}
System.out.println("Received : " + in.read() );
in.close()
答案 1 :(得分:1)
while(in.available()>0)
{
System.out.println("Unavailable...");
}
这没有任何意义。 available()
返回 可用的字节数。如果结果是肯定的,则数据可用,不不可用。
然而,这个循环完全没有意义,应该完全删除。只要有必要,以下read()
将会阻止。
答案 2 :(得分:0)
我会说这段代码
while(in.available()>0)
{
System.out.println("Unavailable...");
}
如果数据可用,会导致无限循环。
尝试
while(in.available() == 0)