我有一個問題:我可以在運行時間中重置backlog
值,因爲我調用了Listen(backlog)
。在調用C#Socket編程中的Listen之後重置積壓
其目的是設計一個服務器,允許用戶重新分配等待接受的最大連接數;而無需重新啓動服務器。
有沒有解決方案呢?
[已更新] 我已經測試過安德魯的建議。
服務器:
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();
Client.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();
結果在控制檯:
SERVER.EXE
服務器開始。
積壓是一個
Client.exe(實例1)
輸入端口號:9900
客戶端開始。 IPAdress:127.0.0.1:3200端口:9900
真
Client.exe(例如2)
輸入端口號:9901
客戶端啓動。 IPAdress:127.0.0.1:3200,端口:9901"
無連接可以作出,因爲目標機器積極 拒絕它127.0.0.1:3200
假
然後服務器進入關鍵,靠近Client.exe(實例2)
SERVER.EXE
積壓爲三
Client.exe(例如2)
輸入端口號:9901
客戶端啓動。 IP地址:127.0.0。1:3200,端口:9901"
無連接可以作出,因爲目標機器積極 拒絕它127.0.0.1:3200
假
Client.exe(例如3)
輸入端口號:9902
客戶開始IPAdress:127.0.0.1:3200,端口:9902"
無連接可以作出,因爲目標機器積極 拒絕它127.0.0.1:3200
假
好像Listen(3)
無法正常工作。
你試圖做到這一點了嗎? – Andrew