我正在开发一个简单的套接字服务器,它应该能够接受多个连接并通过
我在
一旦传递了
当我搜索这个问题时,我发现多线程可能是我目的的必需品。然而,当我在
对于我是否能够拥有并发和异步套接字连接,多线程是否必要?
编辑:绑定错误...绑定到我的局域网地址导致一些问题。
EndAccept()
将它们交给 "connection" 类处理。问题在于,一旦接受了一个连接,代码就不会再接受任何其他连接直到当前连接结束。我在
Main()
中创建套接字,然后通过 Initialize()
将套接字传递给 ServerEnvironment(静态类)。MainSocket.Bind(new IPEndPoint(IPAddress.Parse(Addr), Port));
MainSocket.Listen(10);
ServerEnvironment.Initialize(MainSocket);
while (true)
{
Console.ReadLine();
Console.WriteLine(">>");
}
一旦传递了
MainSocket
,ServerEnvironment
就会接管。static Socket MainSocket;
public static void Initialize(Socket _MainSocket)
{
MainSocket = _MainSocket;
AcceptGameConnection = new AsyncCallback(AddConnection);
MainSocket.BeginAccept(AcceptGameConnection, null);
}
public static void AddConnection(IAsyncResult Result)
{
Socket UserSocket = MainSocket.EndAccept(Result);
ConnectionCount++;
// Removed the stuff that happens to UserSocket because the same
// symptoms occur regardless of their presence.
MainSocket.BeginAccept(AcceptGameConnection, null);
}
当我搜索这个问题时,我发现多线程可能是我目的的必需品。然而,当我在
Initialize();
和AddConnection();
中使用Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
时,会出现两个不同的线程ID,因此我认为多线程已经是一种能力,我不需要手动创建一个线程。但这并不能解释我的问题。对于我是否能够拥有并发和异步套接字连接,多线程是否必要?
编辑:绑定错误...绑定到我的局域网地址导致一些问题。