Azure에서 간단한 클라이언트 - 서버를 만들려고합니다. 하나의 webrole에 클라이언트가 있고 다른 서버에 서버가 있고 두 가지는 모두 동일한 임차인에 속해 있습니다. 클라이언트와 서버 사이에 더미 파일을 보내기 위해 두 소켓 사이의 간단한 소켓 통신을 사용하고자합니다. 각 역할에 대한Azure에서 WebRole 간 통신을위한 소켓 통신
1 정의 "내부"TCP 엔드 포인트 : 여기
내가 내 응용 프로그램 (명확성을 위해 제거 몇 가지 코드)를 작성하는 방법입니다. 나는 다음을 수행하는 서버에서
byte[] buffer = File.ReadAllBytes(filePath);
mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
mSocket.Connect(IPAddress.Parse(serverIPString), 9000);
mSocket.Send(buffer);
3 : 가정 서버의 포트는 9000 클라이언트의 포트는 다음과 같이 클라이언트가 서버에 더미 파일을 전송 9010
2입니다
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);
모든 것이 푸른 에뮬레이터에서 로컬 잘 작동하지만 클라우드로 갈 때 서버는 :(
이 도와주세요 어떤 연결을하지 않습니다!
부록 :
누군가 내 끝점을 어떻게 찾았습니까? 다음과 같이 서버의 기본 페이지에 내 끝점을 표시하고 보낸 사람/클라이언트가 텍스트 상자에서 파일을 보내려는 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