【发布时间】:2021-12-16 15:55:27
【问题描述】:
我尝试在 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);
}
}
那么问题出在哪里?
【问题讨论】:
-
听起来像是防火墙的东西,或者是绑定地址的东西;最初,尝试使用
IPAddress.Any作为第一个参数。如果它有效,那就太好了。如果没有,请暂时关闭防火墙。如果可行,请为端口 8008 制定防火墙规则 -
TNX。关闭防火墙是我为解决此问题而采取的第一个措施,但即使使用 IpAddress.Any 也不起作用!我想应该是很简单的东西我找不到
-
你能远程登录到目标机器上的任何其他服务吗?
netstat -a会列出监听端口
标签: c# sockets tcplistener