Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将我的C套接字服务器应用程序部署到Azure VM中?这真的是个好主意吗?_C#_Sockets_Azure_Virtual Machine - Fatal编程技术网

C# 如何将我的C套接字服务器应用程序部署到Azure VM中?这真的是个好主意吗?

C# 如何将我的C套接字服务器应用程序部署到Azure VM中?这真的是个好主意吗?,c#,sockets,azure,virtual-machine,C#,Sockets,Azure,Virtual Machine,我有一个想法,正在尝试将数据从Netduino上传到托管在Azure VM中的SQL DB。在与WCF搏斗之后,我刚刚用C编写了一个简单的应用程序,通过下面的套接字代码处理请求,并完成了这项工作——在我的机器/局域网上运行良好。因为我还不太了解 Azure VMs,如何将IP/端口公开给外部世界,以使我的客户端应用程序成功地到达服务器部分? 目前我无法让Azure虚拟机聆听外界的声音。我已经创建了一个具有名称、TCP协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关

我有一个想法,正在尝试将数据从Netduino上传到托管在Azure VM中的SQL DB。在与WCF搏斗之后,我刚刚用C编写了一个简单的应用程序,通过下面的套接字代码处理请求,并完成了这项工作——在我的机器/局域网上运行良好。因为我还不太了解

Azure VMs,如何将IP/端口公开给外部世界,以使我的客户端应用程序成功地到达服务器部分? 目前我无法让Azure虚拟机聆听外界的声音。我已经创建了一个具有名称、TCP协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关闭了防火墙,并尝试了它,从外面,没有任何效果

该端口上的侦听器可以被视为安全解决方案吗

为了简单起见,我想到了套接字,但这真的是个好主意吗?你们会做不同的事情并且保持简单吗

...
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 3211);
server.Bind(localEndPoint);
server.Listen(Int32.MaxValue);
while (true)
{
    Socket clientSocket = server.Accept();
    new ProcessClientRequest(clientSocket);
}
...


public ProcessClientRequest(Socket clientSocket)
{
    m_clientSocket = clientSocket;
    new Thread(ProcessRequest).Start();
}

private void ProcessRequest()
{
    const Int32 c_microsecondsPerSecond = 1000000;
    using (m_clientSocket)
    {
        Byte[] buffer = new Byte[1024];
        string lastRead;
        if (m_clientSocket.Poll(5 * c_microsecondsPerSecond, SelectMode.SelectRead))
        {
            if (m_clientSocket.Available == 0)
                 return;
            Int32 bytesRead = m_clientSocket.Receive(buffer, m_clientSocket.Available, SocketFlags.None);
            // Return a key to the client.
            lastRead = WriteDataToDB(System.Text.Encoding.UTF8.GetString(buffer).Replace("\0", string.Empty));
            m_clientSocket.Send(Encoding.UTF8.GetBytes(lastRead));
        }
    }
}    

您是否在上检查了VM的端点设置?在那里添加规则应允许任何人连接到.cloudapp.net:。 这是DNS名称,而不是VM名称。我的Meteor应用程序不需要直接服务器返回功能


如果客户知道您的公钥,那么足够硬的哈希和加密层应该足够安全。

您的问题是这是个好主意吗?你考虑过安全问题吗?WCF绝对是个更好的主意。不要因为你有一些新手问题就放弃它。提出问题,学习成熟的技术并从中受益。我建议您重新表述您的问题,除了想知道WCF是否是一个好主意外,您还有什么疑问?嘿,谢谢!Dzyann,目前我无法让Azure虚拟机听外界的声音。我已经创建了一个具有名称、TCP协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关闭了防火墙,并尝试了它,从外面,没有任何效果。该端口上的侦听器可以被视为安全解决方案吗?