通过java套接字进行的小文件传输,流内接收器似乎永远无法获得它
假设我们使用规范的inputstream读取方法:通过java套接字进行的小文件传输,流内接收器似乎永远无法获得它,java,sockets,networking,Java,Sockets,Networking,假设我们使用规范的inputstream读取方法: while ((bytesRead = bis.read(buffer)) > -1) { bos.write(buffer, 0, bytesRead) System.out.println(bytesRead); bos.flush(); } 对于发送方和接收方,都要执行此任务。我让发送者显示一个已完成发送的状态,但接收者保持被阻止,直到发送者开始发送其他内容,然后被填充,然后退出循环,才读取任何内容。这
while ((bytesRead = bis.read(buffer)) > -1) {
bos.write(buffer, 0, bytesRead)
System.out.println(bytesRead);
bos.flush();
}
对于发送方和接收方,都要执行此任务。我让发送者显示一个已完成发送的状态,但接收者保持被阻止,直到发送者开始发送其他内容,然后被填充,然后退出循环,才读取任何内容。这里的拼图可能缺少什么。谢谢 您是否为发件人调用了
Socket.shutdownOutput()
?如果没有,则接收器可能会等待到超时,等待进一步的传入字节。否。Socket.shutdownOutput()仅仅是关闭最后一个传输操作还是关闭整个套接字?后者不是一个解决方案,因为我需要套接字连接。它将关闭套接字的整个扩展。如果您愿意,您不能将套接字重新用于此后的写入,而只能用于读取答案。如果您正在恢复senders套接字,您应该考虑将其更改为每次传输一个连接。为什么?为什么发送过来的sentinel eof-1或文件大小信息不起作用呢?我以前从未在我的客户端/服务器应用程序中调用过shutdown(),所以我认为它不是。为了让我们能够给你们提供一个有根据的解决方案,你们省略了这篇文章中的许多信息,所以这里主要是关于盲目猜测:1)你们是在同一个套接字上写和读吗?[我看到了]2)你的接收器/读取器代码在哪里?