我試圖爲多個套接字客戶端建立一個模擬。 我的服務器有以下代碼來收聽多個客戶端C++創建多個套接字客戶端
我的套接字來自CAsyncSocket的一個非常簡單的類驅動器,我的環境是Windows MFC。
m_server.Create(....); // with the correct values
if (m_server.Listen()==FALSE)
後來就OnSocketAccept()函數
if (m_server.Accept(tempSock))
{
CSocketThread* pThread = (CSocketThread*)AfxBeginThread(RUNTIME_CLASS(CSocketThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
...
我的模擬應用程序具有下面的代碼:
for (int i = 0; i < numOfClients; i++)
{
m_sConnected[i].Create();
int rVal = m_sConnected[i].Connect(csIPAddress.GetString(), m_port);
這是行不通的。
在WireShark中,我可以看到我的(numOfClients = 10例如)10個客戶端連接到不同的客戶端源端口。
但是m_sConnected的每個新的套接字[I]在第二連接至所有插座包括m_sConnected [0]後成爲NULL。
關閉套接字或銷燬模擬應用程序在服務器端爲所有偵聽套接字的開放線程創建套接字關閉。
什麼問題? 我可以爲我的所有套接字客戶端使用相同的進程/線程嗎?
10x
UrAv。
丹尼爾您好,感謝您的迴應。我沒有把我所有的代碼(我的錯誤)。在服務器端,我正在分離和恢復。我的問題是在客戶端 - 服務器端打開幾個套接字並接收指示給每個服務器線程套接字,包括套接字關閉的指示。 – UrAv
你是否要端口?因爲它看起來像你正在使用同一個 –
沒關係沒有看到你使用的是創建功能。如果您將粘貼更多代碼,那麼更容易理解錯誤的位置。 –