C# TCP 套接字客户端拒绝连接
C# TCP Socket Client refuses connection
这是我的服务器
在互联网上使用多个不同的端口检查工具时,我在我的服务器上建立了连接,表明我的端口是开放的
http://www.infobyip.com/tcpportchecker.php
http://www.yougetsignal.com/tools/open-ports/
static void Main(string[] args)
{
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10897);
Console.WriteLine("Server Start");
Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
while (true)
{
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
Console.WriteLine(handler.RemoteEndPoint);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
这是我的客户端代码
static void Main(string[] args)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY IP HERE"), 10897);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ip);
}
我每次都会收到这个错误,我已经尝试使用 System.Net.Sockets.TcpClient 和套接字从客户端进行多次不同的尝试,每次我都被拒绝连接,所以这似乎是我的客户端的一些问题,因为我的服务器接收到连接来自港口检查员
我已经阅读了许多其他套接字主题,但所有问题都与服务器有关,而不是与客户端有关,我不知道哪里出了问题,有人可以帮助我吗?
编辑:
我可以通过本地主机 (127.0.0.1) 连接,但不能通过我的 public IP
代码工作正常(服务器的前两行什么都不做)。您有防火墙或路由问题。
看来问题是我的路由器有一些设置,因此它不接受到外部 ip 的内部连接,我有我的朋友 运行 客户端代码并且连接正常
与Windows防火墙异常有关。在第一个 运行 上,您应该会收到允许连接的提示。如果您第一次允许它,则会在防火墙中创建例外。也许你否认了。还可以尝试通过 app.manifest
提升您的应用程序所需的权限
这似乎是一个端口转发/路由问题。使用 Port checker
检查转发端口是否可访问
这是我的服务器
在互联网上使用多个不同的端口检查工具时,我在我的服务器上建立了连接,表明我的端口是开放的
http://www.infobyip.com/tcpportchecker.php
http://www.yougetsignal.com/tools/open-ports/
static void Main(string[] args)
{
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10897);
Console.WriteLine("Server Start");
Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
while (true)
{
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
Console.WriteLine(handler.RemoteEndPoint);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
这是我的客户端代码
static void Main(string[] args)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY IP HERE"), 10897);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ip);
}
我每次都会收到这个错误,我已经尝试使用 System.Net.Sockets.TcpClient 和套接字从客户端进行多次不同的尝试,每次我都被拒绝连接,所以这似乎是我的客户端的一些问题,因为我的服务器接收到连接来自港口检查员
我已经阅读了许多其他套接字主题,但所有问题都与服务器有关,而不是与客户端有关,我不知道哪里出了问题,有人可以帮助我吗?
编辑: 我可以通过本地主机 (127.0.0.1) 连接,但不能通过我的 public IP
代码工作正常(服务器的前两行什么都不做)。您有防火墙或路由问题。
看来问题是我的路由器有一些设置,因此它不接受到外部 ip 的内部连接,我有我的朋友 运行 客户端代码并且连接正常
与Windows防火墙异常有关。在第一个 运行 上,您应该会收到允许连接的提示。如果您第一次允许它,则会在防火墙中创建例外。也许你否认了。还可以尝试通过 app.manifest
提升您的应用程序所需的权限这似乎是一个端口转发/路由问题。使用 Port checker
检查转发端口是否可访问