【发布时间】:2011-05-07 00:08:38
【问题描述】:
我对套接字知之甚少,但到目前为止我还没有遇到太多问题。我实际上被困在如何知道对方何时完成发送消息。到目前为止,我所拥有的是服务器端的一个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,但我想情况并非如此
那么,我做错了什么?
更新
实际上,在阅读了您的答案并稍微浏览了代码之后,我意识到这就是协议的用途。
我应该事先知道一方何时完成发送以及另一方何时开始写入。也许添加最后一个字符以告知我已发送完毕,或者添加消息的前缀大小。
感谢您的回答。
【问题讨论】: