C# 打开从Azure网站到外部服务器的TCP套接字

C# 打开从Azure网站到外部服务器的TCP套接字,c#,sockets,azure,tcp,azure-web-app-service,C#,Sockets,Azure,Tcp,Azure Web App Service,是否可以用C语言从Azure网站到外部服务器以编程方式打开TCP套接字 我需要检查另一台服务器是否在线-因为ping不能在Azure上使用,我将使用外部服务器配置为接受的TCP套接字 我在本地使用的代码在ping公共web服务器时非常有效,但是在Azure上它不起作用 我知道,由于Azure上的负载平衡器,您无法ping,但打开TCP套接字也不可能吗 这能实现吗?如果没有-否则我如何检查外部服务器是否处于活动状态而不使用冗长的变通方法 注意:外部服务器绝对没有防火墙/端口/IP问题 这是我在本地

是否可以用C语言从
Azure网站
到外部服务器以编程方式打开TCP套接字

我需要检查另一台服务器是否在线-因为ping不能在Azure上使用,我将使用外部服务器配置为接受的TCP套接字

我在本地使用的代码在ping公共web服务器时非常有效,但是在Azure上它不起作用

我知道,由于Azure上的负载平衡器,您无法ping,但打开TCP套接字也不可能吗

这能实现吗?如果没有-否则我如何检查外部服务器是否处于活动状态而不使用冗长的变通方法

注意:外部服务器绝对没有防火墙/端口/IP问题

这是我在本地开发人员机器和机架空间上运行的代码

 public static bool TcpConnectivityTest(string ipAddress, int port = 1433, int timeoutMillisec = 2000)
    {
        Socket socket = null;

        try
        {
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, false);

            var result = socket.BeginConnect(ipAddress, port, null, null);
            result.AsyncWaitHandle.WaitOne(timeoutMillisec, true);

            return socket.Connected;
        }
        catch
        {
            return false;
        }
        finally
        {
            if (null != socket)
            {
                socket.Close();
                socket.Dispose();
            }
        }
    }

在Azure网站中,像您拥有的那样的出站连接应该可以正常工作。我用Google的ip地址在端口80和443上尝试了你的代码,用sql azure服务器在1433上尝试了你的代码,两者都连接良好。Azure网站将仅限制对入站流量侦听80和443以外的端口,但不连接到远程端口。您还可以在本地环回端口上侦听。因此,在azure网站上侦听80或443以外的端口是不可能的吗?