我创建了一个 Instant Messanger,它允许客户端之间通过服务器进行通信。
服务器存储登录的客户端的网络流和用户名,客户端发送的消息也用于确定服务器应该将消息路由到谁。
我遇到的问题是从一个客户端到另一个客户端的前两条消息有效,例如:
- Client1 向 Client2 发送消息
- 服务器接收client1的消息并路由到client2(目标)
- Client2 接收消息(礼物)
反之亦然。
在客户端 1 发送初始消息后,客户端 2 不再接收来自客户端 1 的消息。
我看到的问题是服务器确实收到了消息并且似乎将其发送到正确的流,但预期的客户端没有收到它。
在这种情况下,接收客户端,client2 不能/不接收消息,但可以发送消息,并且 client1 确实接收它们。
如果需要更多信息,请告诉我。
我可以保证我使用的代码是准确的,我唯一能想到的就是网络流或 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 和username 等东西。现在假设这是完美的工作,否则前两个将无法工作。正如我上面已经说过的,这对我来说很奇怪,我尝试重新编码无济于事。