//Den lokalen Hostnamen und die IP-Adresse zurückgeben;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
//Computerbezogene Informationen über den Computernamen abrufen;
InetAddress i = InetAddress.getByName("Livingstone-PC");
//Hostbezogene Informationen über den Domänennamen abrufen
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL url = neue URL("http://localhost:8080/demo.html");
url.getHost();
Socket(Client):
Wenn das Objekt hergestellt ist, können Sie eine Verbindung zum angegebenen Host herstellen. Da TCP verbindungsorientiert ist, muss beim Einrichten des Socket-Dienstes ein Server vorhanden sein und die Verbindung erfolgreich sein ;
//Erstellen Sie den Socket-Dienst des Clients und geben Sie den Zielhost und -port an.
Socket s = new Socket("cj-PC", 10003);
// Um Daten zu senden, sollte der Ausgabestream im Socket-Stream abgerufen werden.
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Hello");
out.write("hello".getBytes());
//Erhalte die Antwortnachricht
InputStream in = s.getInputStream();
byte[] bufIn = neues Byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));
s.close();// Das Stream-Objekt in ist im Socket gekapselt und schließt das Stream-Objekt automatisch;
ServerSocket (Server):
Richten Sie den serverseitigen Socket-Dienst ServerSocket ein und überwachen Sie einen Port.
Rufen Sie das verbundene Clientobjekt über die Akzeptanzmethode des Objekts ab. Wenn keine Verbindung besteht, wird es warten (blockieren):
Wenn der Client Daten sendet, muss der Server den Lesestrom des entsprechenden Clientobjekts verwenden, um die vom Client gesendeten Daten abzurufen.
ServerSocket ss = new ServerSocket(10003);
//ServerSocket(int port,int backlog); backlog ist die maximale Anzahl von Verbindungen;
Socket s = ss.accept();
InputStream in = s.getInputStream();
byte[] buf = neues Byte[2014];
int len = in.read(buf);
String rec = new String(buf, 0, len);
System.out.println(rec);
// Nachricht zurückschicken
OutputStream out = s.getOutputStream();
out.write("received".getBytes());
s.close();//Der Server schließt den Client automatisch;
(1)Kunde:
Richten Sie einen Socket-Dienst ein und geben Sie den Host und den Port an, zu dem eine Verbindung hergestellt werden soll.
Rufen Sie den Ausgabestream im Socket-Stream ab, schreiben Sie die Daten in den Stream und senden Sie sie über das Netzwerk an den Server.
Rufen Sie den Eingabestream im Socket-Stream ab, rufen Sie die vom Server zurückgegebenen Daten ab und schließen Sie die Client-Ressourcen.
DatagramSocket: Senden Sie Textdaten per UDP-Übertragung.
Schicken:
// UDP-Dienst erstellen, ein DatagramSocket-Objekt erstellen und eine Produktnummer angeben;
DatagramSocket socket = new DatagramSocket(8888);
// Bestimmen Sie die Daten und kapseln Sie sie in ein Datenpaket, DatagramPacket (die Portnummer des Zielcomputers muss angegeben werden);
byte[] buf = "udp ich komme".getBytes();
DatagramPacket dp = neues DatagramPacket(buf, buf.length,
InetAddress.getByName("Machine-Name"), 10086);
// schicken;
socket.send(dp);
// Schließung;
socket.close();
Erhalten:
//Udpsocket-Dienst definieren. Normalerweise wird ein Port überwacht, der tatsächlich eine digitale ID für die empfangende Netzwerkanwendung definiert;
DatagramSocket socket = new DatagramSocket(10086);
while (true) { //Der Zweck besteht in der kontinuierlichen Überwachung
byte[] buf = neues Byte[1024];
//Datenpaket zum Speichern von Daten definieren;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// Speichern Sie die empfangenen Daten über die Empfangsmethode des Dienstes im Datenpaket.
socket.receive(dp);//Blockierungsmethode, bleibt hier hängen, wenn keine Daten vorhanden sind;
// Daten über die Datenpaketmethode abrufen;
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
}
Socket s = new Socket("Machine-Name", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = neues Byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// Stoppen Sie das Senden von Daten
s.shutdownOutput();
ServerSocket ss = new ServerSocket(10005); //ss.accept() Methode hat blockierende Wirkung;
// Für jeden Socket, der mit der Methode „accept()“ abgerufen wird, kann ein separater Thread erstellt werden.