Sockets Azure虚拟机-可以';t连接到侦听特定端口的TCP服务器

Sockets Azure虚拟机-可以';t连接到侦听特定端口的TCP服务器,sockets,azure,networking,tcp,azure-virtual-machine,Sockets,Azure,Networking,Tcp,Azure Virtual Machine,我正在尝试在on-prem客户端和运行Windows 2K16的Azure VM(标准D1 v2)之间建立TCP连接 在虚拟机上,我运行一个简单的TCP服务器(见下面的代码),它接收端口。我在参数中传递了端口51515 网络接口有一个我正在尝试使用的公共IP 我在门户的TCP端口51515上添加了入站端口规则(source=any,source-port=*,destination=any,dest.port=51515,protocol=TCP,action=allow) 虚拟机上的Windo

我正在尝试在on-prem客户端和运行Windows 2K16的Azure VM(标准D1 v2)之间建立TCP连接

在虚拟机上,我运行一个简单的TCP服务器(见下面的代码),它接收端口。我在参数中传递了端口51515

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

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

虚拟机上的Windows防火墙已关闭(公用、域和专用)

我从prem端使用Telnet,使用公共IP和51515端口。获取无法在那里打开连接的消息

我已经尝试在VM上访问IIS,并且可以使用另一个入站规则从on prem访问它

有什么想法吗

谢谢

汤姆


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


将其绑定到0.0.0.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])));

@Atom如果您修改绑定IP,您可以访问端口吗?@Atom您可以使用
netstat-ant | findstr
检查,如果您的代码与我的代码类似,则端口正在侦听
0.0.0
。我在实验室里测试,我可以从我本地的电脑上访问它。嗨,它现在工作了吗?是的,它工作了!谢谢EJP!
var server = new TcpListener(new IPEndPoint(IPAddress.Any, int.Parse(args[0])));