2016-11-05 57 views
-2

我有一個使用WSAECONNRESET,錯誤代碼10054事件的winsock服務器。我可以通過使用exit()函數來執行此操作,但必須重新啓動我的應用程序。winsock,如何發送RST,ACK或RST數據包

問題是如何殺死一個已建立的連接併發送一個第一個數據包到我的服務器上,這樣就可以像使用exit()但不使用它的過程一樣。所以我的應用程序必須繼續運行,但它必須終止與RST數據包的連接。基本上我想模仿CTRL + C,或退出()或終止()過程,以便發送RST數據包。我試過 SO_LINGER套接字選項與socketclose()結合使用。和shutdown();但它不會導致WSAECONNRESET事件。

回答

1

我試圖SO_LINGER套接字選項

你需要「開」與零超時設置。

結合

socketclose();

正確的。

shutdown();

不正確的。刪除。它發送一個FIN。

但它不會導致WSAECONNRESET事件。

因爲shutdown()。刪除。

+0

生病了試試看。但是我發現WSACleanup()也會導致這個事件,因爲它「終止了Winsock 2 dll的使用」。 – br0lly

+0

它會爲所有套接字做到這一點,但它是過度的。上面的方式是執行它的標準方法。 – EJP

+0

好的。我只使用一個插座,所以沒關係。但仍然感謝您的幫助。 – br0lly

相關問題