我是套接字编程的初学者。我正在寻找示例c代码来补偿tcp是基于流的事实,即客户端中的一个发送可能与服务器中的recv不相等。
当我从客户端发送消息时,如何确保:
strcpy(send_data, "Hello Server");
send(sock,send_data,strlen(send_data), 0);
它正好在服务器端收到..
我知道tcp是基于流的,因此消息可能会碎片化,并且可能需要在服务器上进行多次recv调用才能获得整个消息。
但是如何在收到完整邮件之前让服务器继续接收?
我知道它背后的理论.. 我正在寻找C 中的示例(最好是客户端和服务器端的完整代码)
答案 0 :(得分:0)
首先,您创建一个协议。如果它总是一个c风格的字符串,你可以只寻找一个NUL终结符。
然后,您会在收到数据时将数据读入并放入缓冲区。然后解析缓冲区以查找终结符,处理数据(对应用程序意味着什么),并将其从缓冲区中删除。
这也是你发送的方式,因为你永远不知道每次发送的呼叫会发送多少数据。将要发送的内容放入本地内存缓冲区,调用发送,然后删除实际从本地缓冲区发送的字节数。
此外,Stack Overflow不是一个让人们指出示例代码的网站 - 那就是Google。这是一个发布您的代码的地方,让人们帮助您找出它的错误。