Heim >Java >javaLernprogramm >Detaillierte Erläuterung der spezifischen Schritte der Netzwerkprogrammierung
Drei Elemente der Netzwerkprogrammierung
Ja Die eindeutige Kennung eines Computers im Internet.
Die InetAddress-Klasse hat keinen Konstruktor. Verwenden Sie die folgende Methode, um das InetAddress-Objekt abzurufen
static InetAddress[] |
getAllByName(String host)
Gibt bei einem gegebenen Hostnamen ein Array seiner IP-Adresse basierend auf dem auf dem System konfigurierten Namensdienst zurück. |
||||||||||
statische InetAddress |
getByAddress(byte[] addr) Gibt anhand der ursprünglichen IP-Adresse ein InetAddress-Objekt zurück. |
||||||||||
statische InetAddress |
getByAddress(String host, byte[] addr) Erstellt eine InetAddress basierend auf dem angegebenen Hostnamen und der IP-Adresse. |
||||||||||
statische InetAddress |
getByName(String host) Bestimmt die IP-Adresse eines Hosts mit einem Hostnamen.
|
||||||||||
statische InetAddress |
getLocalHost() Kehren Sie zum lokalen Host zurück. |
InetAddress的其它方法
|
getHostAddress()
|
||||
String |
() |
0~1023这个范围的端口已经被系统使用
协议
UDP协议的特点
UDP协议通讯涉及的类
每个数据包大小限制在64k中.
|
DatagramSocket() 构造数据报套接字并将其绑定到本地主机上任何可用的端口。 |
DatagramSocket()构造数据报套接字并将其绑定到本地主机上任何可用的端口. |
成员方法
|
|
||||
void |
senden(DatagramPacket p)
|
DatagramPacket (byte[] buf, int length, InetAddress adresse, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 参数:buf - 包数据.length - 包长度.Adresse – 目的地址。Hafen – 目的端口号。 |
|
Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
参数: address - IP 地址。 port - 端口号。 |
成员方法
|
getInputStream() 返回此套接字的输入流。 | ||||
OutputStream |
getOutputStream() 返回此套接字的输出流. |
Diese Klasse implementiert Server-Sockets. Der Server-Socket wartet auf Anfragen, die über das Netzwerk eingehen. Es führt eine Aktion basierend auf der Anfrage durch und gibt die Ergebnisse dann möglicherweise an den Anforderer zurück.
Konstruktormethode
|
|
Socket |
akzeptieren()
Lauscht auf Verbindungen zu diesem Socket und akzeptiert diese. Frage:Warum ist ServerSocket nicht so eingestellt, dass es den Stream erhält? (getOutputStream) Was ist die entsprechende Methode? Da der Server mit mehreren Clients verbunden ist, wird zur Vermeidung von Verwechslungen mit jedem ein Socket eingerichtet client. Operationen getOutputStream- und getInputStream-Operationen |
ServerSocket serverSocket = new ServerSocket(9090);
Socket socket = serverSocket.accept(); //Diese Methode ist eine blockierende Methode. Wenn nein Wenn der Client eine Verbindung herstellt, wird er ewig warten.
InputStream inputStream = socket.getInputStream() ;
byte[] buf = neues Byte[1024];
int length = 0;
length = inputStream.read(buf);
System.out.println("Vom Server empfangene Daten: "+ neuer String (buf,0,length));
//Eine Nachricht an den Client senden und der Server schreibt Daten an den Client
OutputStream out = socket.getOutputStream(); //Ausgabestream abrufen object
out.write("Client, ich habe es erhalten!".getBytes());
Serverressourcen schließen
serverSocket.close();
Socket-Socket = new Socket(InetAddress.getLocalHost(), 9090);
OutputStream out = socket.getOutputStream();
out.write("Das ist mein erstes TCP-Beispiel!" .getBytes());
InputStream inputStream = socket. getInputStream();
byte[] buf = new byte[1024];
int length = inputStream.read(buf);
System.out.println("Vom Client empfangene Daten: "+ new String(buf,0,length));
socket.close();
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der spezifischen Schritte der Netzwerkprogrammierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!