繁体   English   中英

C# 异步 TCP 侦听器套接字不接受连接

[英]C# Asynchronous TCP Listener Socket does not accept connections

我尝试在 C# 上制作我的第一个异步套接字程序,尽管代码没有错误,但它不接受连接。 我已经通过 Telnet 进行了检查。 这是我的 TCP 服务器代码:我刚刚在互联网上看到了一些示例,但我找不到我的问题,我相信应该在我的代码中添加一些其他内容。

 class Program
{
    static byte[] Mybuffer = new byte[4096];
   static TcpClient tc = new TcpClient();
     
    private static void PrintUsageInfo()
    {

    }
    static void Main(string[] args)
    {

        TcpListener tl = new TcpListener(IPAddress.Parse("192.168.1.141"), 8008);
        tl.Start();
        tl.BeginAcceptTcpClient(OnCompleteTCP, tl);


    }



    static void OnCompleteReadData(IAsyncResult isa)
    {
        int countreadbytes = 0;
        
        
        try
        {
            //TcpClient tc;
            tc = (TcpClient)isa.AsyncState;
            countreadbytes = tc.GetStream().EndRead(isa);
            if (countreadbytes==0)
            {
                Console.WriteLine("USER Disconnected");
                //client disconnect
                return;
            }
            
            //continue to get data
            tc.GetStream().BeginRead(Mybuffer, 0, Mybuffer.Length, OnCompleteReadData, tc);
            Console.Write(Encoding.ASCII.GetString(Mybuffer));
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

    }
    static void OnCompleteTCP(IAsyncResult isa)
    {
        
        TcpListener tcpl = (TcpListener)isa.AsyncState;
        
       
       
        tc=tcpl.EndAcceptTcpClient(isa);
        tc.GetStream().BeginRead(Mybuffer, 0, Mybuffer.Length, OnCompleteReadData, tc);
        
    }
}

那么问题是什么?

感谢 Caius Jard,我检查了 netstat -a 以查看所有侦听端口,但我的端口不在那里。 所以我发现这可能是运行过程中的一个问题。 我将 BeginAcceptTcpclient 置于 while(true) 循环中,现在运行良好!

static void Main(string[] args)
    {

        TcpListener tl = new TcpListener(IPAddress.Any, 8008);
        tl.Start();
        while (true) { tl.BeginAcceptTcpClient(OnCompleteTCP, tl); }


    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM