0

我目前正在开发 ac# 程序,我在套接字上打开一个连接并侦听客户端。

如何检查 TcpListener 当前是否连接了任何客户端。我想这样做,所以当有人关闭控制台应用程序而不是终止任何正在连接的东西时,它将等待所有连接的客户端完成,然后再退出控制台应用程序。

下面是代码:

TcpClient client = listener.AcceptTcpClient();
                if (client.Connected)
                {
                    library.logging(classDetails + MethodInfo.GetCurrentMethod().Name,
                        string.Format("Client Connected: {0}",((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString()));
                    NetworkStream stream = client.GetStream();
                    byte[] data = new byte[client.ReceiveBufferSize];
                    int bytesRead = stream.Read(data, 0, Convert.ToInt32(client.ReceiveBufferSize));
                    string request = Encoding.ASCII.GetString(data, 0, bytesRead);
                    byte[] msg = System.Text.Encoding.ASCII.GetBytes("200 OK");
                    ProcessXML process = new ProcessXML(library, appSettings);

                    // Send back a response.
                    stream.Write(msg, 0, msg.Length);
                    process.processXML(request, ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString());
                    client.Close();

TcpListener 中是否有一种方法来获取已连接客户端的计数,或者是否必须通过将客户端添加到列表数组之类的东西来由我自己管理,然后在客户端关闭时将其删除。

4

1 回答 1

1

据我所知,TcpListener 不会在内部跟踪接受的连接——这必须由应用程序根据需要明确完成。

于 2012-05-31T22:04:40.990 回答