我在循环中使用recv
函数来接收网络数据,但是假设我想停止在循环中接收数据。我可以打破循环,但这似乎不是一种非常干净的方式来停止接收数据。
那么有没有办法干净地停止接收数据,或者只是打破循环好吗?这是HTTP GET / POST请求。
这里简化了我正在使用:
do {
nDataLen = recv(mySocket, data, BUFFSIZE, 0);
if (nDataLen > 0)
{
/* Process Data */
// I'd like to break out of the loop
// if something is found when processing the data
// But, I want to do this cleanly.
}
} while (nDataLen != 0);
答案 0 :(得分:3)
中断recv循环不会关闭连接。所有这一切都是你停止调用recv,因此停止从套接字读取数据。来自对等方的数据仍将到达您的套接字。如果要干净地关闭,请在套接字文件描述符上调用close
。
答案 1 :(得分:0)
打破循环是一种停止调用recv
的方法。另一种方法是包含一个布尔值should_stop
并在循环条件中检查它。但是,你应该收到插座中留下的任何内容并正确关闭它。
答案 2 :(得分:0)
如果您不需要套接字,请关闭套接字并断开循环。