私は複数のソケットクライアントのシミュレーションを構築しようとしています。 私のサーバは、複数のクライアントを聴くためのコードを持っています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);
動作しません。
In WireShark私の(numOfClients = 10などの)10のクライアントが異なるクライアントソースポートに接続されていることがわかります。
しかしm_sConnectedの各新しいソケット[I]はm_sConnected [0]含むすべてのソケットへの第2の接続後にNULLになってきています。
シミュレーションソケットを閉じるか、シミュレーションアプリケーションを破棄すると、待機ソケットのすべての開いているスレッドのソケット側がサーバー側に作成されます。
何が問題ですか? すべてのソケットクライアントに対して同じプロセス/スレッドを使用できますか?
10x
UrAv。
ダニエルこんにちはとのリンクが含まれています。私はすべてのコードを入れなかった(私の間違い)。サーバー側では、切り離して再開しています。私の問題はクライアント側です - サーバー側はいくつかのソケットを開き、ソケットの終了の指示を含む各サーバーのスレッドソケットに指示を受け取ります。 – UrAv
あなたは港を変えますか?同じものを使用しているように見えます –
あなたが作成機能を使用していることを気にしないでください。あなたのコードをもっと貼り付けるならば、どこにエラーがあるのか分かりません。 –