gpt4 book ai didi

c - 如何知道套接字何时完成读取

转载 作者:太空狗 更新时间:2023-10-29 17:21:48 26 4
gpt4 key购买 nike

我对套接字知之甚少,但到目前为止我还没有遇到太多问题。我实际上被困在如何知道对方何时完成发送消息的问题上。到目前为止,我所拥有的是服务器端的一个 while 循环,它从套接字读取直到什么都没有留下(或者这就是应该做的)。这是代码:

char c[1024]; //buffer
inst much;
while(much = read(sockfd, &c, 1024) > 0) {
printf("read %d, clientSays> %s\n", much, c);
}
printf("reading, finished\n");

因此,在客户端,我发送了一个“hello world”消息,它实际上显示在服务器控制台上,但它没有打印“读取完成”消息,所以我想它卡住了等待另一条消息.

我虽然当没有其他东西可读时 read 函数会返回 0,但我想情况并非如此

那么,我做错了什么?


更新

实际上,在阅读了您的回答并稍微浏览了代码之后,我意识到这就是协议(protocol)的作用。

我应该事先知道一方何时完成发送以及另一方何时开始写作。也许添加最后一个字符以告知我已完成发送,或者添加消息的前缀大小。

感谢您的回答。

最佳答案

您的示例期望 read() 返回 0,这将在客户端关闭连接时发生。如果您必须保持连接打开但知道消息的结尾在哪里,您可以在每条消息前添加其长度或在末尾添加消息结束标记。套接字 API 中没有内置任何内容来帮助您。

关于c - 如何知道套接字何时完成读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129904/

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