C#TCP/IP无法正常工作

本文关键字:工作 常工作 IP C#TCP | 更新日期: 2023-09-27 17:59:24

我正在开发一个windows服务,该服务应该使用该类收集所有传入的TCP/IP流。它从服务OnStart()void开始。

然而,我遇到过这样的情况:当消息来自第二个发件人时,整个通信就会停止工作。在您重新启动之前,服务不会对单个连接做出反应。

public class TCPIP
{
    public static Receiver rc = new Receiver();
    public class Receiver
    {
        public delegate void ReceivedEventHandler(string ReceivedText, string Sender);
        public event ReceivedEventHandler Received;
        public void Start()
        {
            System.Threading.Thread th = new System.Threading.Thread(internals);
            th.Start();
        }
        private void internals()
        {
            TcpListener _listener = new TcpListener(1994);
            _listener.Start();
            while (true)
            {
                TcpClient rcclient = _listener.AcceptTcpClient();
                StreamReader reader = new StreamReader(rcclient.GetStream());
                string msg = "";
                while (reader.Peek() > -1)
                {
                    msg += Convert.ToChar(reader.Read()).ToString();
                }
                Received(msg, rcclient.Client.RemoteEndPoint.ToString().Split(Convert.ToChar(":"))[0]);
                // Cleanup
                rcclient.Close();
                reader.Close();
            }
        }

有人能帮我改进这个类吗?它可以回答来自多个端点的连接,并且在一个端点之后不会被占用?

事先非常感谢。

C#TCP/IP无法正常工作

只需在接受某个连接时创建一个线程,因此如果它被阻止,将不会影响主程序。

顺便说一句,你可以尝试AcceptTcpClientSync来防止阻塞调用。