-1

我是套接字编程的初学者。我正在寻找示例 c 代码来弥补 tcp 是基于流的事实,即客户端中的一个发送可能不等于服务器中的 recv。

我如何确保当我从客户端发送这样的消息时:

strcpy(send_data, "Hello Server");
send(sock,send_data,strlen(send_data), 0);

它完全在服务器端收到..

我知道 tcp 是基于流的,因此消息可能会变得支离破碎,并且可能需要在服务器上进行多次 recv 调用才能获取整个消息。

但是我如何让服务器继续接收直到收到完整的消息?

我知道它背后的理论.. 我正在寻找 C 中的示例(最好是客户端和服务器端的完整代码)

4

1 回答 1

0

首先,您创建一个协议。如果它总是一个 c 风格的字符串,你可以只寻找一个 NUL 终止符。

然后,您在收到数据时读取数据并将其放入缓冲区。然后解析缓冲区以查找终结符,处理数据(无论这对您的应用程序意味着什么),然后将其从缓冲区中删除。

这也是您发送的方式,因为您永远不知道每次发送调用会发送多少数据。将要发送的内容放入本地内存缓冲区,调用发送,然后删除实际从本地缓冲区发送的许多字节。

此外,Stack Overflow 不是一个要求人们向您指出示例代码的网站——那是谷歌。这是一个发布您的代码并让人们帮助您找出问题所在的地方。

于 2013-09-24T03:20:29.540 回答