gpt4 book ai didi

c - 用于补偿 TCP 流套接字的示例 C 代码?

转载 作者:行者123 更新时间:2023-11-30 19:48:24 25 4
gpt4 key购买 nike

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

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

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

它在服务器端被准确地接收..

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

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

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

最佳答案

首先,您创建一个协议(protocol)。如果它始终是 C 风格的字符串,您只需查找 NUL 终止符即可。

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

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

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

关于c - 用于补偿 TCP 流套接字的示例 C 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com