我正在编写C#TCP套接字服务器,但由于超时而无法检测到断开连接。
我的意思是,我使用一定的超时配置服务器,然后关闭客户端&如果没有写任何内容,我也会尝试使用socketstream。
客户端未检测到此情况。客户端执行" write"无论如何退出并没有任何错误。
这是服务器的代码:
谢谢, 费边
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MyTcpServer {
private const int BUFSIZE = 32;
static void Main(string[] args) {
int servPort = 5009;
TcpListener listener = null;
try {
listener = new TcpListener(IPAddress.Any, servPort);
listener.Start();
} catch (SocketException se) {
Console.WriteLine(se.ErrorCode + ": " + se.Message);
Environment.Exit(se.ErrorCode);
}
byte[] rcvBuffer = new byte[BUFSIZE];
for (;;) {
Socket socket = null;
try {
socket = listener.AcceptSocket();
socket.ReceiveTimeout = 3000;
Console.Write("Handling client - ");
Console.WriteLine("Reading from client");
socket.Receive(rcvBuffer, rcvBuffer.Length, SocketFlags.None);
string line = Encoding.UTF7.GetString(rcvBuffer);
Console.WriteLine(line);
Console.WriteLine("Closing connection");
socket.Close();
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
}
}