2011-03-31 137 views
1

我正在封裝activex exe中的套接字通信。套接字連接請求問題

此套接字對象是從客戶端應用程序創建的,並將向客戶端提供事件通知。

當ConnectionRequest事件引發時,連接被接受,客戶端將通過CONNECTED(定義在套接字對象中)事件通知客戶端。 一切工作到此爲止,但在通過Accept方法接受上一個連接之後,ConnectionRequest再次與相同的RequestId一起引發。

當我試圖關閉套接字並重新發送請求時,運行時錯誤生成 說「運行時錯誤10038,描述符不是套接字」!

有沒有人遇到這個問題?請提出一些解決方法。

在此先感謝。 PS:我正在使用TCP協議。

回答

0

我敢肯定的requestID值是在插座聽狀態的socket描述符,所以它是有道理的,當你只有一個監聽器(這是最常見的),它並沒有改變。

這些是與進程有關的,所以你不能在進程之間有意義地傳遞它們。要做到這一點,你可能需要調用WSADuplicateSocket()函數。我從來沒有嘗試過,所以你可以嘗試嘗試 - 但我相信當ConnectionRequest處理程序退出而不接受Winsock控件發送拒絕的請求時。

+0

requestType的類型根據winsock的接口定義而定。 – ramu 2011-04-01 09:51:36

+0

是的,但事情比這更復雜一點。價值通常只在一個過程中有意義。閱讀MSDN文章。 – Bob77 2011-04-01 16:45:23