サーバーを介したクライアント間の通信を可能にするインスタントメッセンジャーを作成しました。
サーバーは、ログインしているクライアントのNetworkStreamとユーザー名を格納し、クライアントから送信されたメッセージは、サーバーがメッセージを誰にルーティングするかを確認するためにも使用されます。
私が抱えている問題は、あるクライアントから別のクライアントへの最初の2つのメッセージが機能することです。
- Client1はClient2にメッセージを送信します
- サーバーはclient1のメッセージを受信し、client2(ターゲット)にルーティングします
- Client2はメッセージを受信します(プレゼント)
そして副ヴェルシア。
最初のメッセージがclient1によって送信された後、client2はclient1からのメッセージを二度と受信しません。
私が見ている問題は、サーバーが実際にメッセージを受信し、正しいストリームに送信しているように見えるが、目的のクライアントがメッセージを受信していないことです。
この状況で受信側のクライアントは、client2がメッセージを受信できない/受信しませんが、メッセージを送信でき、client1はメッセージを受信します。
さらに情報が必要な場合はお知らせください。
私が使用しているコードが正確であることを保証できます。私が考えることができるのは、networkstreamまたはtcpclientの性質だけです。
int accountThreadCount = 0;
while (accountThreadCount < login.newClientLogin.clientList.Count())
{
AccountThread newAccountThread = login.newClientLogin.clientList[accountThreadCount];
if (newAccountThread.username == comm.to)
{
Stream relayMessageStream = newAccountThread.tcpc.GetStream();
iff.Serialize(relayMessageStream, comm);
}
accountThreadCount++;
}
AccountThreadは、TcpClientとユーザー名などを格納します。これが完全に機能していると仮定すると、そうでなければ最初の2つは機能しません。すでに上で述べたように、これは私に非常に特有であるため、私は無駄に再コーディングを試みました。