java - 在同一个套接字上的文件之后发送字符串
问题描述
我正在通过先前发送文件的套接字发送一个字符串,但收件人将其作为文件本身的一部分读取,有没有办法在发送字符串之前发送一种 EOF?
发送我正在使用的文件
byte[] buffer = new byte[1024];
int count;
while ((count = fis.read(buffer)) >= 0) os.write(buffer, 0, count);
os.flush();
(和收到它几乎一样)
要发送我正在使用 OutputStreamWriter 的字符串
(这是我的代码:hatbin)
我也在这里读到我应该发送一个 SOH 字符,但是我应该发送哪个以及如何发送?
提前致谢。
解决方案
不,没有办法发送“eof”,然后再发送一些东西。
如果您不想打开新连接,基本上有两种方法可以解决这个问题。
- 您可以修改客户端,使其将某些特殊字节序列识别为“分隔符”,并在从套接字读取分隔符时停止写入文件。在这种情况下,您需要采取一些策略来处理文件实际包含分隔符的可能性。
- 您可以在发送文件之前以字节为单位发送文件的大小,并修改客户端以便计算从套接字读取的字节数。当客户端读取足够多时,它应该停止写入文件。