2012-10-27 28 views
1

我正在制作一个聊天客户端,它通过UDP套接字以不同数量从服务器接收信息结构。这些结构中的每一个都以一个标题开始,告诉客户端它是什么类型的结构。是否有可能使用recvfrom来检索整个结构,无论大小是多少,然后根据头将其转换为我需要的任何结构,或者首先必须读取头,确定结构,然后读取在一块一块的结构?recvfrom - 接收任意大小的结构?

回答

3

您只能接收UDP数据包作为完整的数据报。你必须做一个recvfrom缓冲区足够大的任何消息,然后适当地转换它。

+0

好吧,这是完美的,所以如果我知道一个数据包的最大大小是128字节,recvfrom将不会继续阻塞,如果我请求那么多,但只得到一个16字节的结构? – theeggman85

+0

正确。它将从单个数据报接收至多128个字节。如果有人只发送16个字节,那么'recvfrom'将只返回16个字节。 –