簡體   English   中英

我應該如何徹底擺脫recv循環?

[英]How should I cleanly break out of a recv loop?

我在循環中使用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);

打破recv循環不會關閉連接。 所有這一切都是你停止調用recv,因此停止從套接字讀取數據。 來自對等方的數據仍將到達您的套接字。 如果要干凈地關閉,則在套接字文件描述符上調用close

打破循環是一種停止調用recv 另一個是包含一個布爾值should_stop並在循環條件中檢查它。 但是,您應該收到插座中剩余的任何內容並正確關閉它。

如果你不需要套接字關閉套接字並打破循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM