1
这是我的听力功能和连接功能C#异步套接字概念
Socket Listen
public void Listen(){
IPEndPoint ep = new IPEndPoint(IPAddress.Any, PortNumber);
Listen.Bind(ep);
Listen.Listen(10);
Listen.BeginAccept(new AsyncCallback(NewConnection), null);}
public void NewConnection(IAsyncResult asyn)
{
Socket Accepted = Listen.EndAccept(asyn);
Listen.BeginAccept(new AsyncCallback(NewConnection), null);
SomeFunction(Accepted);
}
代码工作正常,没有任何问题 - 我跟踪代码,看看如何与不同的客户工作,我理解的流程。但是,我不明白1套接字如何为不同的客户端提供服务。 它通过套接字在客户端之间复用吗?
我在MSDN上读到Accepted
在我的代码中只能用于已建立的连接,不能再继续使用 - 那部分我不明白。客户端尝试连接到服务器套接字时实际发生了什么? EndAccept
是否返回一个完全不同的套接字与不同的端口建立连接,并保持同一个套接字监听同时接受更多的请求?
谢谢我会试试你说的 –
我调试2个不同的客户端,同时试图连接到同一台服务器,他们都连接到不同的端口,但服务器处理它们都有相同的端口,我不明白如何 –
每个套接字(服务器和客户端)都有一个本地端点和一个远程端点。我相信,这些端点可能与您预期的方式不匹配。因此,如果客户端在端口4000上连接到服务器,则客户端的远程端点端口为4000,但服务器的本地端点端口可能不是4000.这是您的意思吗? (此外,客户端的本地端点端口有点随意分配 - 某人理解得比我能解释得更好,但最有可能不会是4000) – mztan