首页 > 解决方案 > 在同一个套接字上的文件之后发送字符串

问题描述

我正在通过先前发送文件的套接字发送一个字符串,但收件人将其作为文件本身的一部分读取,有没有办法在发送字符串之前发送一种 EOF?

发送我正在使用的文件

byte[] buffer = new byte[1024];
int count;
while ((count = fis.read(buffer)) >= 0) os.write(buffer, 0, count);
os.flush();

(和收到它几乎一样)

要发送我正在使用 OutputStreamWriter 的字符串

(这是我的代码:hatbin

我也在这里读到我应该发送一个 SOH 字符,但是我应该发送哪个以及如何发送?

提前致谢。

标签: javastringsockets

解决方案


不,没有办法发送“eof”,然后再发送一些东西。

如果您不想打开新连接,基本上有两种方法可以解决这个问题。

  • 您可以修改客户端,使其将某些特殊字节序列识别为“分隔符”,并在从套接字读取分隔符时停止写入文件。在这种情况下,您需要采取一些策略来处理文件实际包含分隔符的可能性。
  • 您可以在发送文件之前以字节为单位发送文件的大小,并修改客户端以便计算从套接字读取的字节数。当客户端读取足够多时,它应该停止写入文件。

推荐阅读