//Renvoie le nom d'hôte local et l'adresse IP ;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
//Obtenir des informations relatives à l'ordinateur via le nom de l'ordinateur ;
InetAddress i = InetAddress.getByName("Livingstone-PC");
//Obtenir des informations relatives à l'hôte via le nom de domaine
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL url = nouvelle URL("http://localhost:8080/demo.html");
url.getHost();
Prise (client):
Lorsque l'objet est établi, vous pouvez vous connecter à l'hôte spécifié. Étant donné que TCP est orienté connexion, lors de l'établissement du service socket, un serveur doit exister et la connexion est établie avec succès, la transmission des données est effectuée sur le canal. ;
//Créez le service socket du client et spécifiez l'hôte et le port cibles ;
Socket s = nouveau Socket("cj-PC", 10003);
// Afin d'envoyer des données, le flux de sortie dans le flux socket doit être obtenu ;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Bonjour");
out.write("bonjour".getBytes());
//Recevoir le message de réponse
InputStream in = s.getInputStream();
octet[] bufIn = nouvel octet[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));
s.close();//L'objet stream est encapsulé dans le socket et ferme automatiquement l'objet stream ;
ServeurSocket (serveur) :
Établissez le service de socket côté serveur, ServerSocket, et écoutez un port ;
Récupérez l'objet client connecté via la méthode accept de l'objet. S'il n'y a pas de connexion, il attendra (blocage) :
Si le client envoie des données, le serveur doit utiliser le flux de lecture de l'objet client correspondant pour obtenir les données envoyées par le client ;
ServerSocket ss = nouveau ServerSocket (10003);
//ServerSocket(int port,int backlog); le backlog est le nombre maximum de connexions ;
Prise s = ss.accept();
InputStream in = s.getInputStream();
octet[] buf = nouvel octet[2014];
int len = in.read(buf);
String rec = new String(buf, 0, len);
System.out.println(rec);
// renvoie le message
OutputStream out = s.getOutputStream();
out.write("reçu".getBytes());
s.close();//Le serveur fermera automatiquement le client ;
(1)Client :
Établissez un service de socket et spécifiez l'hôte et le port auxquels se connecter ;
Obtenez le flux de sortie dans le flux socket, écrivez les données dans le flux et envoyez-les au serveur via le réseau ;
Obtenez le flux d'entrée dans le flux de socket, obtenez les données renvoyées par le serveur et fermez les ressources client ;
DatagramSocket : envoyez un morceau de données texte via la transmission UDP ;
Envoyer:
//Créez le service udp, créez un objet DatagramSocket et donnez un numéro de produit ;
Prise DatagramSocket = nouveau DatagramSocket(8888);
// Détermine les données et les encapsule dans un paquet de données, DatagramPacket (le numéro de port de la machine de destination doit être spécifié) ;
byte[] buf = "udp j'arrive".getBytes();
DatagramPacket dp = nouveau DatagramPacket(buf, buf.length,
InetAddress.getByName("Machine-Name"), 10086);
// envoyer;
socket.send(dp);
// fermeture ;
socket.close();
Recevoir:
//Définissez le service udpsocket. Habituellement, un port est surveillé, ce qui définit en fait une identification numérique pour l'application réseau de réception ;
Prise DatagramSocket = nouveau DatagramSocket (10086);
while (true) { //Le but est de surveiller en permanence
octet[] buf = nouvel octet[1024];
//Définir le package de données pour stocker les données ;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// Stocke les données reçues dans le paquet de données via la méthode de réception du service ;
socket.receive(dp);//Méthode de blocage, bloquée ici s'il n'y a pas de données ;
// Obtenez les données via la méthode des paquets de données ;
String ip = dp.getAddress().getHostAddress();
Données de chaîne = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
}
Socket s = new Socket("Nom de la machine", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
octet[] buf = nouvel octet[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// Arrête d'envoyer des données
s.shutdownOutput();
ServerSocket ss = new ServerSocket(10005); //la méthode ss.accept() a un effet bloquant ;
// Un thread séparé peut être créé pour chaque Socket obtenu par la méthode accept() ;