【发布时间】:2010-09-24 02:10:45
【问题描述】:
我正在尝试在 C 中创建一个 TCP 客户端程序,客户端将在其中启动,连接到服务器。然后它会发送一些信息,然后只听它接收到的内容并做出相应的反应。
我遇到问题的部分是持续聆听。这是我所拥有的
...
while (1) {
numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0);
buf[numbytes] = '\0';
printf("Received: %s\n", buf);
// more code to react goes here
}
...
连接到服务器后,发送两行数据后,服务器应该会收到很多信息,但是当我运行它时,它会打印:
收到:
然后继续坐在那里,直到我强迫它关闭。
** 编辑 ** 当我按照乔纳森告诉我的操作时,我得到以下信息:
计数:-1,错误:111,已接收:
所以这意味着它的错误,但我该怎么办呢?
【问题讨论】:
-
客户端是否关闭连接?
-
尝试打印 strerror(errno) 看看是什么错误
-
在将缓冲区归零之前,您应该检查 numbytes >=0,下溢可能会使事情变得更加混乱。
-
嗨,Anti9,您发现问题所在了吗?好奇的人想知道。