【问题标题】:Java Socket program can not read data if the server sends data using write and recieves data using readUTF()如果服务器使用 write 发送数据并使用 readUTF() 接收数据,Java Socket 程序将无法读取数据
【发布时间】:2009-04-23 09:20:42
【问题描述】:

我写了一个socket程序,客户端使用readUTF()writeUTF()与服务器通信,而服务器使用read()和write()与客户端通信。

我的服务器可以读取来自服务器的所有数据。我在服务器端使用 write(),在客户端使用 readUTF()。

因此,在这种情况下,如果数据量很大,我的客户端无法获取服务器发送的所有数据,只能接收到部分数据。

应该怎么做才能确保所有数据都被传输?

【问题讨论】:

  • 你能提供一些关于套接字实现的背景吗? UDP还是TCP等?

标签: java sockets


【解决方案1】:

在这种情况下不要使用 readUTF 和 writeUTF。而是读写​​字节数组:

read(byte [] b)

然后使用适当的字符串构造函数将字节数组转换为字符串:

public String(byte[] bytes,
              String charsetName)

您应该尝试捕获 UnsupportedEncodingException 异常。

【讨论】:

    【解决方案2】:

    请注意,readUTF 和 writeUTF 使用 UTF 的修改形式。我不知道您在服务器上使用 read() 和 write() 发送什么,但您应该确保客户端期望的内容与服务器期望的内容之间存在兼容性。

    我会让客户端和服务器都使用相同的方法发送/接收。我不知道这是否会导致您的问题,但它会为您节省一些无关的悲伤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多