我目前要做的是使用silverlight为irc做一个非常基本的网络聊天。
基本上我正在尝试这样做是有一个tcp服务器监听来自silverlight的连接。当客户端连接时,它会创建一个到irc的新连接,并通过服务器应用程序向/从客户端/ irc传递数据。
我已经让它适用于一个客户端连接,但是只要两个(或更多)客户端连接多个连接就会转到irc但是从客户端传递的所有数据都会通过最新的irc连接(如果是有道理)。
例如Client1,Client2和Client3都连接到irc,但无论谁发送数据都通过Client3传输。
在客户端和服务器应用程序之间,它识别来自不同客户端的数据,因此我认为问题在于我连接到irc的方式。当TCP服务器接受新客户端时,新线程将监听传入数据,并从那里建立新线程以连接到irc。我确定问题存在的地方,但我现在很困惑自己,我想知道是否有人可以帮我找出解决方案。
编辑:我认为问题在于它无法区分特定客户端正在使用哪个线程,所以它只是通过最新的线程发送它。甚至可以这样做吗?答案 0 :(得分:0)
服务器似乎只打开最后一次连接的套接字。也许如果您尝试在服务器上处理消息并打开客户端的套接字,它可能会起作用。
答案 1 :(得分:0)
我认为您在线程模型中的问题以及管理连接池的方式。 阅读这篇文章Simple Threaded TCP Server。