我有几个问题-
1. 我有两台电脑通过socket连接。程序执行时
outputStream.writeInt(value);
outputStream.flush();
实际发生了什么?程序是否等到另一台计算机读取整数值?
2.如何清空outputStream
or inputStream
?意思是,当清空outputStream
or时inputStream
,写入该流的任何内容都会被删除。(请不要建议通过关闭连接来做到这一点!)我试图用inputStream
这种方式清空 -
byte[] eatup=new byte[20*1024];
int available=0;
while(true)
{
available=serverInputStream.available();
if(available==0)
break;
serverInputStream.read(eatup,0,available);
}
eatup=null;
String fileName=(String)serverInputStream.readObject();
程序不应处理该行,因为outputStream
. 但是我的程序无论如何都会执行它并引发java.io.OptionalDataException
错误。
注意:我正在开发一个客户端-服务器文件传输项目。客户端将文件发送到服务器。第二个代码用于服务器终端。如果在服务器端按下“取消按钮”,那么它将停止从客户端读取字节并向客户端serverInputStream
发送信号(我使用int
-1)。当客户端收到此信号时,它会停止向服务器发送数据,但我注意到它serverInputStream
不是空的。所以我需要清空它serverInputStream
,以便客户端计算机能够再次发送服务器计算机文件(这就是为什么我无法从read
方法管理锁定)