C#服务器超时在客户端未检测到

时间:2016-11-23 20:17:21

标签: c# sockets tcp timeout tcpclient

我正在编写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);
            }
        }
    }
}

0 个答案:

没有答案