C#TCP套接字客户端拒绝连接

时间:2016-05-18 19:06:46

标签: c# sockets tcp client connection-refused

这是我的服务器

在互联网上使用多个不同的端口检查工具时,我在服务器上获得连接,证明我的端口已打开

http://www.infobyip.com/tcpportchecker.php

http://www.yougetsignal.com/tools/open-ports/

http://ping.eu/port-chk/

http://ping.eu/port-chk/

Multiple successful connections

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和套接字从客户端进行多次不同的尝试,并且每当我得到连接被拒绝时,由于我的服务器收到连接,因此我的客户端似乎有些问题来自港口跳棋 Error

我已经阅读了许多其他套接字主题,但所有问题都与服务器而不是客户端有关,我不知道有什么问题可以帮助我吗?

编辑: 我可以通过localhost(127.0.0.1)连接,但不能从我的公共IP

连接

4 个答案:

答案 0 :(得分:0)

代码工作正常(服务器的前两行什么都不做)。您有防火墙或路由问题。

答案 1 :(得分:0)

问题似乎是我的路由器有一些设置使得它不能接受外部ip的内部连接,我让我的朋友运行客户端代码并且连接正常

答案 2 :(得分:0)

它与Windows防火墙例外有关。在第一次运行时,应该提示您允许连接。如果您第一次允许它在防火墙中创建例外。也许你否认了。还可以尝试通过app.manifest

为您的应用程序提升所需的权限

答案 3 :(得分:0)

这似乎是端口转发/路由问题。使用Port checker

检查转发的端口是否可访问