Heim  >  Artikel  >  Java  >  Ausführliche Erläuterung von Beispielen für die Java-Netzwerkprogrammierung

Ausführliche Erläuterung von Beispielen für die Java-Netzwerkprogrammierung

零下一度
零下一度Original
2017-07-24 09:22:521748Durchsuche

1. Sockel

Der Netzwerktreiber stellt eine Schnittstelle und einen Mechanismus zur Anwendungsprogrammierung bereit, der mit einer Port-Terminal-Anwendung verglichen werden kann, solange die Ware hier platziert wird wenn die Lieferung der Ware abgeschlossen ist. Es wird in der Anwendung erstellt, stellt über einen Bindungsmechanismus eine Beziehung zum Treiber her und teilt sich selbst die entsprechende IP und den entsprechenden Port mit.

Socket ist eine Netzwerkprogrammierklasse in Java, die sich im java.net-Paket befindet.

---- DatagramSocket // Wird für die UDP-Kommunikation verwendet

---- ServerSocket // Wird für die TCP-Kommunikation verwendet, wird auf der Serverseite verwendet

---- Socket //Server und Client für TCP-Kommunikation

2. UDP-Netzwerkprogramm

InetAddress-Klasse repräsentiert die Internet Protocol (IP)-Adresse

// static InetAddress getLocalHost() throws UnknownHostException Gibt den lokalen Host zurück

//static InetAddress getByName(String host) Bestimmt die IP-Adresse des Hosts anhand des Hostnamens. Der Hostname kann der Maschinenname (z. B. „java.sun.com“) oder der Text seiner IP-Adresse sein. Darstellungsform

//static InetAddress[] getAllByName(String host) gemäß Hostname gibt zurück ein Array seiner IP-Adresse.

static void ipDemo() throws UnknownHostException{
                InetAddress netAddr=InetAddress.getLocalHost();                //取得本地电脑的一些信息System.out.println(netAddr.toString());  
                System.out.println(netAddr.getHostAddress());
                System.out.println(netAddr.getHostName()); //取得其他电脑的信息InetAddress netAddr2=InetAddress.getByName("DELL-PC");  //这里也可以传IP地址System.out.println(netAddr2.getHostAddress());  //169.254.170.71System.out.println(netAddr2.getHostName()); //DELL-PC                //取得百度的地址InetAddress []  ipList=InetAddress.getAllByName("www.baidu.com");for(InetAddress addr:ipList){
                    System.out.println(addr.toString()); 
                }
            }

3. UDP senden und empfangen DatagramSocket, DatagramPacket

//Beispiel 1 Das einfachste Senden und Empfangen

Sender == So importieren Sie das java.net-Paket

Daten über UDP senden:

1) UDPSocket-Dienst einrichten

2) Daten bereitstellen und Daten werden in Daten gekapselt packet DatagramPacket (byte[] buf, int length, InetAddress address, int port) //Es gibt mehrere Konstruktoren

3) Daten über den Socket-Dienst senden

4 ) Schließen Sie die Ressource

import java.net.*;class Sender4{//DatagramPacket (byte[] buf, int length, InetAddress address, int port) public static void main(String [] args) throws Exception
                                {                                      byte [] buff="hello cat".getBytes(); 
                                        DatagramSocket socket=new DatagramSocket();
                                        DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("192.168.0.103"),8888);
                                        socket.send(packet);
                                        socket.close();
                                        System.out.println("ok");
                                }
                            }
--Receiver

1) Erstellen Sie einen Socket-Dienst und geben Sie an, dass er an einem bestimmten Port lauscht

2) Erstellen Sie ein DatagramPacket zum Empfangen von Daten

3) Nehmen Sie die Daten aus der Verpackung

4) Schließen Sie die Ressource

import java.net.*;class Receive4
                            {public static void main(String [] args) throws Exception
                                {
                                DatagramSocket socket=new DatagramSocket(8888); //别忘了端口号byte[] buff=new byte[1024] ;
                                    DatagramPacket packet=new DatagramPacket(buff,buff.length);
                                    
                                    socket.receive(packet);
                                    
                                    String senderIp=packet.getAddress().getHostAddress();
                                    String senderData=new String(packet.getData(),0,packet.getLength());int senderPort=packet.getPort();
                                    System.out.println(senderIp+"---"+senderData+"---"+senderPort);
                                    
                                    socket.close();
                                }
                            }

/ /Beispiel 2, zyklisches Senden und Empfangen

import java.net.*;import java.io.*;class NewSender{public static void main(String [] args) throws Exception
                        {
                                System.out.println("发送端启动了");
                                DatagramSocket socket=new DatagramSocket();
                                
                                BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //包装键盘输入流String str=null;while((str=br.readLine())!=null){byte [] buff=str.getBytes();
                                        DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),9000);
                                        socket.send(packet);
                                }
                                
                                br.close();
                                socket.close();            
                        }    
                    }
import java.net.*;class NewReceiver{public static void main(String [] args) throws Exception
                    {
                            DatagramSocket socket=new DatagramSocket(9000);
                            System.out.println("接收端启动了");                            while(true){ 
                                  byte [] buff=new byte[1024] ; 
                                  DatagramPacket packet=new DatagramPacket(buff,buff.length);
                                  socket.receive(packet);
                                  
                                  String senderIp=packet.getAddress().getHostAddress();                                  int sendPort=packet.getPort();
                                  String msg= new String(packet.getData(),0,packet.getLength());
                                  
                                  System.out.println(senderIp+":"+sendPort+":"+msg);    
                            }
                    }
                }

Beispiel 3: Multithread-Chatroom-Programm

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen für die Java-Netzwerkprogrammierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn