我已经在我的系统中启动了一个客户端。据端口上运行没有7913.我通过TCP/IP发送请求数据从Java到服务器套接字上7913.如何使用源端口通过Java中的TCP/IP发送和接收数据
日志运行是消息发送到插座[ADDR =/190.161.153.109,端口= 7913 ,localport = 54717]
我也收到了服务器对特定数据的响应。现在服务器也试图发送一个请求到我的本地端口54717,而不是我的应用程序正在侦听的端口[即7913]。
如何处理请求?当我尝试使用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关闭。我如何让它在我的编码中被接受。请亲引导我。 –