システムでクライアントを起動しました。それは何7913.私は7913.ソースポートを使用してJavaでTCP/IPでデータを送受信する方法
ログ上で動作するJavaからサーバソケットにTCP/IP経由で要求データを送信していないのですポート上で実行されているソケットに送信されたメッセージ[ADDR =/190.161.153.109、ポート= 7913 、localport = 54717]
また、特定のデータについてサーバーからの応答も受け取りました。現在、サーバーは私のアプリケーションがリッスンしているポート[すなわち7913]ではなく、私のローカルポート54717にリクエストを送信しようとしています。
リクエストの処理方法は? telnetでローカルポートに接続しようとすると、接続が拒否されます。
コード:
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は閉じます。どのように私はそれを私のコーディングで受け入れることができます。親切に私を導く。 –