我想在Azure中创建一个简单的客户端服务器。我有一个webrole客户端和另一个服务器,都属于同一个租户。 我想在两者之间使用简单的套接字通信从客户端发送一个虚拟文件到服务器。Azure中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 + ", ";
“没有什么作用”的确是非特定的。如果有例外,告诉我们它是什么。它在服务器端还是客户端?另外,如果你显示'serverIPString'来自哪里,它会有所帮助。 (发现内部端点的代码在哪里?) – smarx
对不起。不,没有例外(正如我提到的,它在本地工作正常)。服务器只是没有从发送者/客户端获得任何连接。 – Hajjat
另外,我在附录中添加了关于端点的描述。谢谢! – Hajjat