如果服务器使用write发送数据并使用readUTF()接收数据,则Java套接字程序无法读取数据

如果服务器使用write发送数据并使用readUTF()接收数据,则Java套接字程序无法读取数据,java,sockets,Java,Sockets,我编写了一个套接字程序,其中客户端使用readUTF()和writeUTF()与服务器通信,而服务器使用read()和write()与客户端通信 我的服务器可以读取来自服务器的所有数据。我在服务器端使用write(),在客户端使用readUTF() 因此,在这种情况下,如果数据量很大,我的客户机无法获取服务器发送的所有数据,只接收部分数据 如何确保所有数据都被传输?请注意,和writeUTF使用修改后的UTF格式。我不知道您在服务器上使用read()和write()发送什么,但是您应该确保客户机

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

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

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

如何确保所有数据都被传输?

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

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

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


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

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

read(byte [] b)
然后使用适当的字符串构造函数将字节数组转换为字符串:

public String(byte[] bytes,
              String charsetName)

您应该尝试捕获不受支持的编码异常。

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

read(byte [] b)
然后使用适当的字符串构造函数将字节数组转换为字符串:

public String(byte[] bytes,
              String charsetName)

您应该尝试捕获UnsupportedEncodingException异常。

您能提供一些有关套接字实现的背景信息吗?UDP或TCP等?你能提供一些关于套接字实现的背景知识吗?UDP或TCP等。?