我正在尝试在 Azure 中创建一个简单的客户端服务器。我在一个 webrole 中有客户端,在另一个 webrole 中有服务器,两者都属于同一个租户。我想在两者之间使用简单的套接字通信将一个虚拟文件从客户端发送到服务器。
这是我编写应用程序的方式(为清楚起见,删除了一些代码):
1- 为每个角色定义“内部”tcp 端点。假设服务器的端口是 9000。客户端的端口是 9010。
2-客户端向服务器发送一个虚拟文件,如下所示:
byte[] buffer = File.ReadAllBytes(filePath);
mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
mSocket.Connect(IPAddress.Parse(serverIPString), 9000);
mSocket.Send(buffer);
3- 在服务器上,我执行以下操作:
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, 9000);
mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
mSocket.Bind(ipEnd);
mSocket.Listen(BACKLOG);
Socket socket = mSocket.Accept();
byte[] buffer = new byte[BUFFER_SIZE];
int byteCount = socket.Receive(buffer);
在 Azure 模拟器中本地一切正常,但是当我转到云端时,服务器没有任何连接:(
请帮忙!
附录:
有人问我如何找到我的端点。我在服务器的主页上显示我的端点,如下所示,并让发送者/客户端在文本框中指定他们要将文件发送到的 IP。
foreach (var instance in RoleEnvironment.CurrentRoleInstance.Role.Instances)
foreach (KeyValuePair<string, RoleInstanceEndpoint> pair in instance.InstanceEndpoints)
addresses += "[" + pair.Key + "] " + pair.Value.IPEndpoint.Address + ":" + pair.Value.IPEndpoint.Port + ", ";