두 개의 별도 프로그램 인 클라이언트와 서버를 만들었습니다. 나는 이클립스 내에서 동일한 테스트 (Windows) 머신 (localhost)에서 runnable jar로 테스트를 시도했다. 그것은 꼭해야했던 것처럼 정확하게 작동했습니다.소켓 네트워킹은 로컬 호스트에서만 작동합니다.
그러나 내 동료에게 임상 실험실 (및 이후 서버)을 테스트했을 때 작동하지 않았습니다. 우리는 포트가 열려 있는지 확인했습니다 (고객 측에서도). 그러나 아무 소용이 없습니다. 그것은 작동하지 않았다. 난 그냥 시간 제한 ConnectException을 얻을 것이다.
내가 사용하는 소켓은 50178-50180입니다.
나는 그것을 어떻게 생각해야할지 모른다. 어떤 아이디어가 잘못 될 수 있습니까? 나는 코드의 나머지 부분을 포함하지 않았다
(serverside)
serverSocket = new ServerSocket(50178);
while (true)
{
clientSocket = serverSocket.accept();
streamOut = clientSocket.getOutputStream();
objectOut = new ObjectOutputStream(streamOut);
streamIn = clientSocket.getInputStream();
objectIn = new ObjectInputStream(streamIn);
(stuff)
}
(clientside)
Socket socket = new Socket(ipAddress, 50178);
OutputStream streamOut = socket.getOutputStream();
DataOutputStream dataOut = new DataOutputStream(streamOut);
DataInputStream dataIn = new DataInputStream(socket.getInputStream());
이후 I/O 물건 (가 로컬 호스트를 통해 작동하기 때문에 실제로 작동 않습니다) :
이
소켓 코드입니다.편집 : 요청한 코드를 추가했습니다. 나는 또한 같은 네트워크 (마녀 로컬 IP 192.168.1. *)에있는 두 대의 컴퓨터에서 시도했다. 그것은 효과가 있었다.
서버를 운영 한 사람이 공용 IP 주소를 가지고 있습니까? 고객이 그 주소를 사용 했습니까? – Joni
예, 공용 IP가 사용되었습니다. 그것은 올바른 것이 었습니다. – Karlovsky120