java新手,socket编程,请问如何一次发送多个文件,网上看了一些代码,但各种异常,高手分析一下:

2024-12-16 18:18:48
推荐回答(4个)
回答1:

读到-1是流末尾,代表流关闭,没有内容是阻塞等待,不会读到-1,流都没用了,还继续传什么啊
你要是想使用这个连接反复发送,需要制定个小协议,例如:开始把文件的字节长度长度发过去,后面把文件字节发过去。
你查看一下JDK DOC,为什么这段代码文件名用了UTF这个write,read,因为这个api就包装了一个后面数据的长度信息,这样才能把文件名跟文件内容分离开来。

回答2:

你用的是字节流读取写入,流中的数据是0,1序列。
由于客户端读入的是多个文件,不停的往服务器写数据。而没有什么标记是来说明读取一个
文件结束下一个文件开始的。服务器只能判断流中是否还有数据,如果有继续读,如果没有
返回-1.
所以,如果没有这种特别的需求,那就把那些文件打包,作为一个文件传输吧。

回答3:

循环发送,肯定是读到全部内容的底啊,它是不会自动加结束符的,应该在发送完一个文件后发送一个结束标志过去,这样既可以处理啦。

回答4:

既然是循环发送,应该可以控制啊,确保一个发送完再发送另一个,应该不难