想找一個使用 WinSock2 API 寫程序的朋友,聊聊天 ( 积分: 100 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
想找一個使用 WinSock2 API 寫程序的朋友,聊聊天
 
从网上找一下,是否有实例测试一下。
 
赫赫,碰到难题了吧!!
 
说吧,聊啥。
先聊10块钱的再说。
 
偶用Winsock1.1,研究MSN中
 
搂主怎么不来了?
 
用什麼語言不論。

我現在做 IOCP ,遇到一點奇怪的問題。

我服務器用 IOCP. 我把所有連接上的客戶端保存到一個 List 中。在我服務器端關閉時,我從這個 List 中讀出所有連接,closesocket 它們。然後再發出一個 close 事件, PostQueuedCompletionStatus Key 與 Overlapped 都為 nil, 表示端口關閉,工作線程退出。

這時按道理我的工作線程 GetQeuedCompletionStatus 會返回 False 才對,有多少 socket 被關閉就應該得到多少個 GetQeuedCompletionStatus 為 False 才對,但事實不是這樣,可能我關 100 socket 只返回幾個,有時一個也沒有;而後面 PostQueuedCompletionStatus 得退出消息又是正確得到了。這樣就造成我服務器主動關閉時,有資源沒有被 Free (內存池回收)。

為什麼會這樣?

注:我現在的方法是在服務器 Close 時,主動做資源回收,而在工作線程 GetQeuedCompletionStatus 返回 False 時,不做任何處理,直接 continue, 繼續等。但總有點怪怪的。有點不統一。
 
看来你对IOCP的理解比我深,跟你搭不上话[:(]
 
你的程序有问题
我的IOCP正常
 
呵呵,你的压力测试搞好了?
IOCP PostQueuedCompletionStatus 退出是没问题的.
检查你的代码和逻辑吧!
 
后退
顶部