Maison > Java > javaDidacticiel > Explication détaillée des exemples de programmation réseau Java

Explication détaillée des exemples de programmation réseau Java

零下一度
Libérer: 2017-07-24 09:22:52
original
1830 Les gens l'ont consulté

1. Socket

Le pilote réseau fournit une interface et un mécanisme de programmation d'application, qui peut être assimilé à une application de terminal portuaire tant que les marchandises sont placées ici, même si la livraison des marchandises est terminée. Il est créé dans l'application, établit une relation avec le pilote via un mécanisme de liaison et s'indique l'adresse IP et le port correspondants.

Socket est une classe de programmation réseau en Java, située dans le package java.net.

---- DatagramSocket // Utilisé pour la communication UDP

---- ServerSocket // Utilisé pour la communication TCP, utilisé côté serveur

---- Socket //Serveur et client pour la communication TCP

2. Programme réseau UDP

La classe InetAddress représente l'adresse IP (Internet Protocol)

// static InetAddress getLocalHost() lance UnknownHostException Renvoie l'hôte local

//static InetAddress getByName(String host) Détermine l'adresse IP de l'hôte en fonction du nom d'hôte. Le nom d'hôte peut être le nom de la machine
                                                                                                                                                                                                                                                                                      ​ Formulaire de représentation

//static InetAddress[] getAllByName (String host) en fonction du nom d'hôte renvoie un tableau de son adresse IP.

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()); 
                }
            }
Copier après la connexion

3. Envoi et réception UDP DatagramSocket, DatagramPacket

//Exemple 1 L'envoi et la réception les plus simples

Expéditeur == Pour importer le package java.net

Envoyer des données via UDP :

1) Établir le service UDPSocket

2) Fournir des données et les données sont encapsulées dans une donnée paquet DatagramPacket (byte[] buf, int length, InetAddress adresse, int port) //Il existe plusieurs constructeurs

3) Envoyer des données via le service Socket

4 ) Fermez la 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");
                                }
                            }
Copier après la connexion

--Récepteur

1) Créez un service Socket et spécifiez d'écouter sur un certain port

2) Créez un DatagramPacket pour recevoir des données

3) Sortez les données du package

4) Fermez la 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();
                                }
                            }
Copier après la connexion

/ /Exemple 2, envoi et réception cycliques

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();            
                        }    
                    }
Copier après la connexion
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);    
                            }
                    }
                }
Copier après la connexion

Exemple 3 : programme de salle de discussion multithread

class Chat
        {public static void main(String [] args)
                {new Thread(new SendThread()).start(); new Thread(new ReceiveThread()).start(); 
                }
        }
Copier après la connexion
//发送端import java.io.*;import java.net.*;class SendThread implements Runnable
        {              private DatagramSocket socket;public void run()
                {try{
                        socket=new DatagramSocket();
                        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                        String msg=null;while((msg=br.readLine())!=null){byte[] buff=msg.getBytes();
                            DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),10000);
                            socket.send(packet);
                        }
                        
                        socket.close();
                        br.close();
                    }catch(Exception ex){
                        ex.printStackTrace();
                    }
                }
        }
Copier après la connexion
//接收端import java.net.*;class ReceiveThread implements Runnable{    private DatagramSocket socket;                    public void run(){try{
                        socket=new DatagramSocket(10000);while(true){byte [] buff=new byte[1024];
                            DatagramPacket packet=new DatagramPacket(buff,buff.length);
                            socket.receive(packet);
                            
                            String senderIp=packet.getAddress().getHostAddress();int senderPort=packet.getPort();
                            String msg=new String(packet.getData(),0,packet.getLength());
                            
                            System.out.println(senderIp+":"+senderPort+":"+msg);
        
                        }
                    }catch(Exception ex)
                    {
                        System.out.println(ex.getMessage());
                    }
                }    
        }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal