Java und TCP-Nachrichten - Nachrichten senden, die auf verschiedenen ports zu jeder Zeit

Habe ich sehr neu, um die Vernetzung und die Verwendung von Netzen zum senden von Nachrichten über Programmierung. Anyways, ich habe eine client-und server-java-Kommandozeilen-Anwendung (server läuft in einer VM auf der gleichen Maschine mit bridged-Netzwerk-adapter und host-zu-Gast-Ping funktioniert und Umgekehrt), und es erscheint auf der server-Seite, dass jede Nachricht, die er erhält kommt von einem anderen port. Ist das normales Verhalten? Was passiert, wenn die Maschine läuft out-of-ports zu verwenden? Macht Java-Bibliotheken intelligent schließen der ports nachdem Sie mit Ihnen gemacht?

Also im Grunde genommen, ist dies sogar ein problem? Wenn es so ist, wie kann ich das beheben? Ausgang aus dem server - und dann code für die client - unten aufgelistet.

SERVER-AUSGABE NACH DER ZUSENDUNG EINIGE NACHRICHTEN:

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

CODE FÜR DEN CLIENT, DIE GESENDETEN NACHRICHTEN:

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;
}
}
Erstellen Sie eine neue Verbindung für jedes Kommentar geschickt, es wird also auf einen anderen port. Wenn Sie dieselbe Verbindung verwenden, jedes mal, es wird 100x effizienter und verwenden Sie den gleichen port jedes mal.
Dank Peter und neeagl für die schnelle und hilfreiche Antworten. Sie waren beide hilfreich.

InformationsquelleAutor Sop Wyin | 2013-10-05

Schreibe einen Kommentar