【发布时间】:2011-03-10 02:14:59
【问题描述】:
我正在尝试在 C# 中进行 Socket 编程,现在我需要了解我们是否需要数组 服务器端的套接字以处理多个客户端或服务器端的一个套接字就足够了 处理许多客户;
并且需要配置服务器到客户端的所有数据是否已经到达以及服务器的可用性,丢弃客户端请求。
我们还需要创建多个线程来处理每个客户端吗?我需要单独处理每个客户。
【问题讨论】:
标签: c# client server-side tcpsocket
我正在尝试在 C# 中进行 Socket 编程,现在我需要了解我们是否需要数组 服务器端的套接字以处理多个客户端或服务器端的一个套接字就足够了 处理许多客户;
并且需要配置服务器到客户端的所有数据是否已经到达以及服务器的可用性,丢弃客户端请求。
我们还需要创建多个线程来处理每个客户端吗?我需要单独处理每个客户。
【问题讨论】:
标签: c# client server-side tcpsocket
每个连接都需要一个新的套接字。 As spender says,你只监听一个socket,socket API会在连接请求进来时创建其他socket。
【讨论】:
一个监听套接字可以服务多个客户端。
【讨论】:
您可以使用一个套接字来响应多个客户端。当客户端与服务器连接时,您的应用程序会创建一个套接字来参与此连接。
【讨论】:
请查看Writing scalable server applications using IOCP。这是一个关于如何创建强大的服务器应用程序的很好的教程。
【讨论】:
您创建一个侦听器(欢迎套接字),它为每个接受的客户端创建一个专用连接套接字。
我认为你需要一些类似的东西。
private void listen(){
TcpListener listener = new TcpListener(5000);
listener.Start();
while (true)
{
// Accept a new client
Socket clientSocket = listener.AcceptSocket();
//Create a thread for every client.
ParameterizedThreadStart pThreadStart = new ParameterizedThreadStart(handleClient);
Thread thread = new Thread(pThreadStart);
thread.Start(clientSocket);
}
}
【讨论】: