Azure VM - 无法连接到侦听特定端口的TCP服务器

时间:2017-11-29 20:08:11

标签: sockets azure networking tcp azure-virtual-machine

我正在尝试在本地客户端和运行Windows 2K16的Azure VM(Standard D1 v2)之间建立TCP连接。

在VM上,我正在运行一个接收端口的简单TCP服务器(请参阅下面的代码)。我在参数中传递了端口51515。

网络接口有一个我正在尝试使用的公共IP。

我在门户网站上的TCP端口51515上添加了入站端口规则(source = any,source port = *,destination = any,dest.port = 51515,protocol = TCP,action = allow)。

虚拟机上的Windows防火墙已关闭(公共,域和私有)。

我使用公共IP和51515端口从本地端使用Telnet。无法在那里打开连接消息。

我尝试访问虚拟机上的IIS,并且可以使用其他入站规则从内部访问它。

有什么想法吗?

谢谢,

汤姆

class Program
{
    static void Main(string[] args)
    {
        try
        {
            var server = new TcpListener(new IPEndPoint(IPAddress.Loopback, int.Parse(args[0])));
            server.AllowNatTraversal(true);
            server.Start();
            server.AcceptTcpClientAsync().ContinueWith(c => System.Console.WriteLine("Client connected from:" + c.Result.Client.RemoteEndPoint));
            System.Console.WriteLine("server listens... press any key to exit");
            System.Console.ReadKey();
        }
        catch (Exception e)
        {
            System.Console.WriteLine(e);
            System.Console.WriteLine("press any key to exit");
            System.Console.ReadKey();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

它不仅可以侦听特定端口,还可以侦听特定地址。你不希望这样。您将服务器套接字绑定到IPAddress.Loopback,即127.0.0.1,这意味着它将不接受来自其本地主机外部的任何连接。

将其绑定到0.0.0.0。

答案 1 :(得分:0)

正如EJP所说,IPAddress.Loopback表示127.0.0.1,该服务只能访问VM内部。

您需要0.0.0.0上的绑定端口或VM的私有IP。如下所示:

var server = new TcpListener(new IPEndPoint(IPAddress.Any, int.Parse(args[0])));