如果服务器使用readUTF()使用write和recieves数据发送数据,则Java Socket程序无法读取数据

时间:2009-04-23 09:20:42

标签: java sockets

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

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

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

应该采取哪些措施来确保传输所有数据?

2 个答案:

答案 0 :(得分:1)

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

read(byte [] b)

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

public String(byte[] bytes,
              String charsetName)

你应该尝试捕获UnsupportedEncodingException异常。

答案 1 :(得分:0)

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

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