我有一个问题:backlog
在调用Listen(backlog)
.
目的是设计一个服务器,可以让用户重新分配等待接受的最大连接数;无需重新启动服务器。
有解决方案吗?
[更新]我已经按照安德鲁的建议进行了测试。
服务器:
IPHostEntry entry = Dns.Resolve("localhost");
IPAddress hostIPAddress = entry.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(hostIPAddress, 3200);
sock.Bind(localEndPoint);
Console.WriteLine("Server start");
sock.Listen(1);
Console.WriteLine("Backlog is one.");
Console.ReadKey();
sock.Listen(3);
Console.WriteLine("Backlog is three");
Console.ReadKey();
客户端.cs
IPHostEntry entry = Dns.Resolve("localhost");
IPAddress ipAddress = entry.AddressList[0];
IPEndPoint serverEndpoint = new IPEndPoint(ipAddress, 3200);
Console.WriteLine("Enter port number: ");
int port = Convert.ToInt32(Console.ReadLine());
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, port);
sock.Bind(localEndpoint);
Console.WriteLine(string.Format("Client start. IPAdress: {0}, Port: {1}", ipAddress, port));
try
{
sock.Connect(serverEndpoint);
}
catch (SocketException ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine(sock.Connected.ToString());
Console.ReadKey();
结果在控制台:
服务器.exe
服务器启动。
积压是一个
Client.exe(实例 1)
输入端口号:9900
客户端启动。IPA地址:127.0.0.1:3200 端口:9900
真的
Client.exe(实例 2)
输入端口号:9901
客户端启动。IPA 地址:127.0.0.1:3200,端口:9901"
无法建立连接,因为目标机器主动拒绝它 127.0.0.1:3200
错误的
然后输入服务器密钥,关闭Client.exe(实例2)
服务器.exe
积压是三个
Client.exe(实例 2)
输入端口号:9901
客户端启动。IPA 地址:127.0.0.1:3200,端口:9901"
无法建立连接,因为目标机器主动拒绝它 127.0.0.1:3200
错误的
Client.exe(实例 3)
输入端口号:9902
客户端启动。IPA 地址:127.0.0.1:3200,端口:9902"
无法建立连接,因为目标机器主动拒绝它 127.0.0.1:3200
错误的
好像Listen(3)
不行。