簡體   English   中英

Java和TCP消息-每次在不同端口上發送的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM