【发布时间】:2015-08-13 23:58:09
【问题描述】:
我编写了一个服务器,它应该在打开与它的连接后等待来自客户端的消息:
while(1){
if(recv(mySocket, buffer, 1000, 0) < 1){
continue;
}
printf("Message received: %s", buffer);
}
我用wireshark检查了哪些数据包被发送到这个服务器,但是对于每个发送的数据包都有2个printf输出。
我现在的问题是我从哪里得到这条额外的消息。
(附加消息是一些随机字节。但每次都一样。)
【问题讨论】:
-
你收到两个包了吗?
-
@Ed Heal Well printf 被调用了两次 -> 所以 recv 也返回了 2 次,但是客户端只发送了一个数据包
-
将recv的返回值保存在一个变量中,每次都打印出来。如果它为零,那么您确实没有收到一条消息,所以不应该打印缓冲区。
-
@jarmod 我将 if(recv(mySocket, buffer, 1000, 0) == -1) 更改为 if(recv(mySocket, buffer, 1000, 0)
-
这是什么类型的socket?数据包长度是多少?
标签: c sockets networking