[英]Java and TCP messages - messages sending on different ports each time
我對聯網和使用網絡通過編程發送消息非常陌生。 無論如何,我有一個客戶端和服務器java命令行應用程序(服務器在具有橋接網絡適配器的同一台計算機上的VM中運行,並且主機到來賓ping通,反之亦然),並且它將分別出現在服務器端它收到的消息來自其他端口。 這是正常行為嗎? 當計算機用盡端口時會發生什么? Java的庫處理完端口后,是否會智能地關閉端口?
所以基本上,這甚至是一個問題嗎? 如果是,該如何解決? 從服務器輸出 ,然后為下面列出的客戶端編碼 。
發送某些消息后的服務器輸出:
Received (/192.168.1.122:59628): shsfh
Received (/192.168.1.122:59629): dfsh
Received (/192.168.1.122:59631): dfh
Received (/192.168.1.122:59632): fdshdf
Received (/192.168.1.122:59633): shf
Received (/192.168.1.122:59637): fgfggsdfhsfdh
Received (/192.168.1.122:59638): fdshf
Received (/192.168.1.122:59639): hs
Received (/192.168.1.122:59640): hfh
發送這些消息的客戶的代碼:
import java.io.*;
import java.util.*;
import java.net.*;
class TCPClient
{
public static void main(String argv[]) throws Exception
{ Scanner scan = new Scanner(System.in);
while (true)
{
String msgcont = scan.nextLine();
System.out.println(tcpSend("192.168.1.153", 6789, 5000, msgcont));
}
}
public static String tcpSend(String ip, int port, int timeout, String content)
{
String ipaddress = ip;
int portnumber = port;
String sentence;
String modifiedSentence;
Socket clientSocket;
try
{
clientSocket = new Socket(ipaddress, portnumber);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(content + '\n');
clientSocket.setSoTimeout(timeout);
modifiedSentence = inFromServer.readLine();
clientSocket.close();
outToServer.close();
inFromServer.close();
}
catch (Exception exc)
{
modifiedSentence = "";
}
return modifiedSentence;
}
}
是的,每次打開與其他主機的套接字時,都可以從計算機上任何剩余的端口啟動連接。 操作系統選擇下一個可用端口並建立連接。
有65536個開放端口,系統會從中保留第一個1-1024端口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.