[英]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.