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;
}
}
Dank Peter und neeagl für die schnelle und hilfreiche Antworten. Sie waren beide hilfreich.
InformationsquelleAutor Sop Wyin | 2013-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, jedes mal, wenn Sie öffnen ein socket zu einem anderen host, der die Verbindung eingeleitet werden können, von jedem der verbleibenden port auf Ihrem Computer. Das OS wählt den nächsten verfügbaren Anschluss und stellt die Verbindung her.
Gibt es 65536 ports öffnen, die ersten ports 1-1024 sind vom system reserviert.
Sie können 1024, wenn Sie nicht root sind, Sie können aber nicht 1023.
InformationsquelleAutor neeagl