C# 如何将我的C套接字服务器应用程序部署到Azure VM中?这真的是个好主意吗?
我有一个想法,正在尝试将数据从Netduino上传到托管在Azure VM中的SQL DB。在与WCF搏斗之后,我刚刚用C编写了一个简单的应用程序,通过下面的套接字代码处理请求,并完成了这项工作——在我的机器/局域网上运行良好。因为我还不太了解 Azure VMs,如何将IP/端口公开给外部世界,以使我的客户端应用程序成功地到达服务器部分? 目前我无法让Azure虚拟机聆听外界的声音。我已经创建了一个具有名称、TCP协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关闭了防火墙,并尝试了它,从外面,没有任何效果 该端口上的侦听器可以被视为安全解决方案吗 为了简单起见,我想到了套接字,但这真的是个好主意吗?你们会做不同的事情并且保持简单吗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协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关
...
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协议、相同公共和私有端口的端点,并选中了“启用直接服务器返回”。为了尝试它,我关闭了防火墙,并尝试了它,从外面,没有任何效果。该端口上的侦听器可以被视为安全解决方案吗?