시스템에서 클라이언트를 시작했습니다. 그것은 어떤 7913. 내가 7913.소스 포트를 사용하여 Java의 TCP/IP를 사용하여 데이터를 보내고받는 방법
로그에서 실행되는 자바에서 서버 소켓에 TCP/IP를 통해 요청 데이터를 전송하지 오전 포트에서 실행된다 소켓에 보낸 메시지 [요지 =/190.161.153.109, 포트 = 7913 , localport = 54717]
해당 특정 데이터에 대한 응답도 받았습니다. 이제 서버는 내 응용 프로그램이 듣고있는 포트가 아닌 내 localport 54717에 요청을 보내려고합니다. [ie 7913]
요청을 처리하는 방법은 무엇입니까? telnet으로 내 localport에 연결하려고하면 연결이 거부됩니다.
코드 :
public static String ickTransport(String ickHeader,String ickdata, Socket connection) throws UnknownHostException, IOException
try
{
connection.setSoTimeout(Integer.parseInt(ickTimeOut));
log.debug("ick Message for "+connection.toString()+" is " + ickMessage);
BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream());
DataOutputStream osw = new DataOutputStream(bos);
osw.writeShort(Integer.parseInt(ickHeader));
osw.writeBytes(ickMessage);
osw.flush();
DataInputStream stream = new DataInputStream(connection.getInputStream());
int numberRecords = stream.readShort();
if (numberRecords > 0) {
int nSizeRead = 0;
byte[] bRequest = new byte[numberRecords];
int nSizeBuffer;
for (; numberRecords > 0; numberRecords -= nSizeBuffer) {
byte[] bBuffer = new byte[numberRecords];
nSizeBuffer = stream.read(bBuffer);
System.arraycopy(bBuffer, 0, bRequest, nSizeRead, nSizeBuffer);
nSizeRead += nSizeBuffer;
}
ickResponse = new String(bRequest);
log.debug("Response from ick is " + ickResponse);
}
}
catch (SocketTimeoutException e)
{
log.error(e.getMessage());
}
return ickResponse;
TCP/IP 작동 방식에 대한 오해가 있습니다. – Henry
먼저 추가 포트에서 수신 대기해야합니다. – Antoniossss
내 시나리오는 서버가 소켓 서버 포트로 요청을 보냈다는 것입니다. 대신 마지막 서비스 포트로 요청을 보냅니다. 이 경우에는 54717입니다. 그러나 응답이 수신되면이 포트 54717이 닫힙니다. 코딩에서 어떻게 수용 할 수 있습니까? 친절하게 나를 인도 해주세요. –