您好我已将代码简化为这个简单的代码:
服务器代码
byte[] data=new byte[1024];
try {
providerSocket=new ServerSocket(port);
while(true) {
connection=providerSocket.accept();
in=connection.getInputStream();
StringBuffer sb=new StringBuffer();
while((len=in.available())>0) {
in.read(data,0,len);
sb.append(new String(data,0,len));
reset(data); //writes -1 value to all bytes...
len=0;
}
System.out.println("Get "+sb.toString());
//does the same if I close() in, connection or do not close anything
}
}
catch(IOException ioException){ }
客户端做了类似的事情:
Socket socket = new Socket(ip, port);
OutputStream out = socket.getOutputStream();
String s="Sample text";
out.write(s.getBytes());
out.flush();
out.close();
socket.close();
//closes cliente program
当我运行Server然后我运行客户端输出是“获取示例文本”,如果我再次运行客户端输出是“获取”whitout更多,确定错误很简单但我已经尝试了一切我不是查看它失败的地方!!!
为什么我收到第一次传输但是没有收到下一次传输? 当然我的示例代码有失败,比如没有关闭输入流等,但如果在System.out.println()之后我写了in.close()和/或connection.close()
,它就不会改变结果问候。
答案 0 :(得分:0)
只是注释掉
\\ out.flush();
\\ out.close();
一段时间并检查,因为我之前也收到此错误,但这是正确的方法,但有时会产生问题。
答案 1 :(得分:0)
不要使用in.available()
,该方法不会按照您的想法执行。相反,将read()
调用移至while循环条件。
int bytesRead = 0;
while((bytesRead = in.read(data)) != -1)
...