我用完成埠實作資料的收發,在一個執行緒里我關閉了socket(1072)的同時,監聽socket收到一個連接回傳的socket也是1072。此時該socket系結完成埠成功,
但是收資料是錯誤的,這如何解釋?還有一種情況是系結完成埠都出錯
2015-05-27 16:04:49 565[16940] [DEBUG]: CIOCPModel::WorkerThread, Release socket context.
2015-05-27 16:04:49 565[16940] [DEBUG]: CIOCPModel::RemoveSocketContext, Client 10.10.10.231:65242 Disconnect.
2015-05-27 16:04:49 565[16940] [DEBUG]: CIOCPModel::RemoveSocketContext, Release socket=1072 successfully. ////////////////出問題的位置, socket = 1072,此時呼叫closesocket
2015-05-27 16:04:49 565[15852] [DEBUG]: CIOCPModel::InternalListenThread, connect socket=1072 ,Client address 10.10.10.231: 65243
2015-05-27 16:04:49 565[15852] [DEBUG]: CIOCPModel::AssociateWithIOCP, Begin
2015-05-27 16:04:49 565[15852] [DEBUG]: CMemoryPool<struct _PER_IO_CONTEXT>::Alloc, Current Free Block is 29
2015-05-27 16:04:49 565[15852] [ERROR]: CIOCPModel::PostRecv, Post WSARecv fail! socket=1072 1072,errorCode is 10038//出問題的位置, socket = 1072 呼叫WSARecv失敗
第二種情況:
2015-05-27 16:30:30 004[11720] [DEBUG]: CIOCPModel::WorkerThread, Release socket context.
2015-05-27 16:30:30 004[11720] [DEBUG]: CIOCPModel::RemoveSocketContext, Client 10.10.10.231:51559 Disconnect.
2015-05-27 16:30:30 004[11720] [DEBUG]: CIOCPModel::RemoveSocketContext, Release socket=1064 successfully.//關閉了1064的socket
2015-05-27 16:30:30 004[15852] [DEBUG]: CIOCPModel::InternalListenThread, connect socket=1064 ,Client address 10.10.10.231: 51560 //客戶端連接后,創建了一個socket=1064
2015-05-27 16:30:30 004[15852] [DEBUG]: CIOCPModel::AssociateWithIOCP, Begin
2015-05-27 16:30:30 004[15852] [FATAL]: CIOCPModel::AssociateWithIOCP, CreateIoCompletionPort() is Error, GetlastError:6
為什么在一個執行緒關閉一個socket的同時可以在另一個執行緒呼叫accept回傳一個相同值的socket?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/156122.html
標籤:網絡通信
上一篇:陣列天線寬波束形成
