"Java Basics Introduction 2nd Edition" - Antworten und detaillierte Erklärungen des Dark Horse Programmer nach dem Unterricht Kapitel 11 Netzwerkprogrammierung

1. Füllen Sie die Lücken aus

1、面向连接、客户端、服务器端      
2、2、0-65535
3、链路层、网络层、运输层、应用层
4、InetAddress
5、DatagramPacket、DatagramSocket

2. Richtig oder falsch

1、错  2、对   3、对  4、错  5、对  

Drei Multiple-Choice-Fragen

1、C     2、ABD    3.、A    4、B   5、C

Vier kurze Fragen beantworten

1. Die Übertragung von Daten im Internet erfordert bestimmte Regeln, die üblicherweise als Netzwerkkommunikationsprotokolle bezeichnet werden. Das Netzwerkkommunikationsprotokoll enthält einheitliche Bestimmungen zu Datenübertragungsformat, Übertragungsrate, Übertragungsschritten usw., und beide Parteien müssen diese Bestimmungen gemeinsam einhalten, um die Dateninteraktion abzuschließen. Bisher gibt es viele Arten von Netzwerkkommunikationsprotokollen, von denen das TCP / IP-Protokoll das weltweit am häufigsten verwendete ist.

2. Das UDP-Protokoll ist ein verbindungsloses Kommunikationsprotokoll. Das sogenannte verbindungslose Protokoll bedeutet, dass der Absender und der Empfänger von Daten keine logische Verbindung herstellen. Da das UDP-Protokoll weniger Ressourcen verbraucht und eine hohe Kommunikationseffizienz aufweist, wird es normalerweise für die Audio-, Video- und normale Datenübertragung verwendet. Das UDP-Protokoll kann die Integrität der Daten bei der Datenübertragung nicht garantieren. Daher wird nicht empfohlen, das UDP-Protokoll bei der Übertragung wichtiger Daten zu verwenden.
Das TCP-Protokoll ist ein verbindungsorientiertes Kommunikationsprotokoll, dh es wird eine logische Verbindung zwischen dem Sender und dem Empfänger hergestellt, bevor die Daten übertragen werden, und dann werden die Daten übertragen. Es bietet eine zuverlässige und fehlerfreie Datenübertragung zwischen zwei Computern. Bei der TCP-Verbindung müssen der Client und der Server geklärt werden, und der Client sendet eine Verbindungsanforderung an den Server. Jedes Mal, wenn die Verbindung hergestellt wird, ist ein "Drei-Wege-Handshake" erforderlich.
3. Mit der ServerSocket-Klasse werden serverseitige Programme erstellt und Anforderungen vom Client empfangen, indem die accept () -Methode des ServerSocket-Objekts aufgerufen wird.

Die Socket-Klasse wird zum Erstellen eines Client-Programms verwendet. Wenn die beiden Sockets des Clients und des Servers eine Standleitungsverbindung hergestellt haben, kann ein Ende der Verbindung entweder kontinuierlich Bytes an das andere Ende schreiben oder Bytes vom anderen Ende lesen. Die Socket-Klasse definiert die Methode getInputStream (), um das Eingabestream-Objekt des Socket zurückzugeben, und definiert die Methode getOutputStream (), um das Ausgabestream-Objekt des Socket zurückzugeben. Solange ein Ende der Verbindung Daten in das Ausgabestreamobjekt schreibt, kann das andere Ende der Verbindung aus dem Eingabestreamobjekt lesen.

Fünf Programmierfragen

1. Das
empfangende Ende:

import java.net.*;
public class Receiver {
    
    
	public static void main(String[] args) throws Exception {
    
    
		byte[] buf = new byte[1024];  
		DatagramSocket ds = new DatagramSocket(8001);
		DatagramPacket dp = new DatagramPacket(buf, 1024);
		ds.receive(dp);  
		String str = new String(dp.getData(),0, dp.getLength());
		System.out.println(str);
		ds.close(); 
	}
}

Absender:

import java.net.*;
public class Send {
    
    
	public static void main(String[] args) throws Exception {
    
    
		DatagramSocket ds = new DatagramSocket(3000);
		String str = "hello world"; 
		DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(),
				InetAddress.getByName("localhost"), 8001);
		ds.send(dp);
		ds.close();
	}
}

2. Server

import java.io.*;
import java.net.*;
public class Server {
    
    
	public static void main(String[] args) throws Exception {
    
    
		new TCPServer().listen();
	}
}
class TCPServer {
    
    
	public void listen() throws Exception {
    
    
		ServerSocket serverSocket = new ServerSocket(8002);
		Socket client = serverSocket.accept();
		OutputStream os = client.getOutputStream();
		os.write(("hello world").getBytes());
		Thread.sleep(5000); 
		os.close();
		client.close();
	}
}

Klient

import java.io.*;
import java.net.*;
public class Client {
    
    
	public static void main(String[] args) throws Exception {
    
    
		new TCPClient().connect();
	}
}
class TCPClient {
    
                 
	public void connect() throws Exception {
    
    
		Socket client = new Socket(InetAddress.getLocalHost(), 8002);
		InputStream is = client.getInputStream();     
		byte[] buf = new byte[1024];
		int len = is.read(buf);
		System.out.println(new String(buf, 0, len));
		client.close();                                    
	}
}

Sechs, die ursprüngliche Frage und ihre Analyse

Nichts.

Ich denke du magst

Origin blog.csdn.net/hypertext123/article/details/109315387
Empfohlen
Rangfolge