簡體   English   中英

應用程序如何使用WSA_IO_PENDING接收數據?

[英]How can application recv data with WSA_IO_PENDING?

我正在使用LSP / SPI進行特定應用程序的嗅探。 但是我不明白這個應用程序如何與網絡一起工作。

沒有“連接”或WSAConnect調用。 我攔截了WSPRecv,WSPSend,WSPCloseSocket,但是沒有WSPConnect。

另一個奇怪的事情-WSPRecv總是返回WSA_IO_PENDING,但是lpOverlapped中的hEvent為null,lpCompletionRoutine也為null。 而且沒有調用WSPGetOverlappedResult(WSAGetOverlappedResult,GetOverlappedResult)和GetQueuedCompletionStatus(GetQueuedCompletionStatusEx)。 我迷上了所有這些功能,但根本沒有電話! 此應用程序如何接收數據?

你能幫助我嗎? 它是如何工作的? 我錯過了什么嗎?

父進程監聽連接。 建立連接后,父進程將啟動一個新的子進程來處理該連接。 子進程繼承所連接套接字的句柄。 子進程通過套接字進行通信,並最終關閉套接字並退出。

如果您單獨查看子進程,則會看到發送,接收和最終關閉,但沒有初始連接,正如您所描述的那樣。

這是在UNIX上更常見的模型,但有時在Windows上使用。

至於奇怪的重疊行為,如果您查看非阻塞套接字的內部結構,則可能會看到這種情況。 非阻塞套接字是在異步套接字上實現的,但我不知道細節。

暫無
暫無

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

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