InetAddress
Importjava.net.InetAddress;Importjava.net.UnknownHostException;/** Indicates the IP address in the Internet * java.net.InetAddress * static method * Statics inetaddress getlocalhost () localhost Local host * Returns the local host, return value inetaddress Object * static inetaddress Getbyname (String hostName) pass host name, get IP Address Object * * Non-static method * String Gethou Staddress () Gets the host IP address * String gethoustname () gets the host name **/ Public classInetaddressdemo { Public Static voidMain (string[] args)throwsunknownhostexception {function_1 (); } /** Static inetaddress Getbyname (String hostName) to pass host name, get IP Address object*/ Public Static voidFunction_1 ()throwsunknownhostexception {inetaddress inet= Inetaddress.getbyname ("www.baidu.com"); System.out.println (inet); } /** static inetaddress getlocalhost () localhost Local host*/ Public Static voidfunction ()throwsunknownhostexception{inetaddress inet=Inetaddress.getlocalhost (); //the output is the host name, and the IP addressSystem.out.println (inet.tostring ()); String IP=inet.gethostaddress (); String name=Inet.gethostname (); SYSTEM.OUT.PRINTLN (IP+" "+name); /*String host = inet.tostring (); string[] str = host.split ("/"); for (String s:str) {System.out.println (s); }*/ }}
UDP Send Side
Importjava.io.IOException;ImportJava.net.DatagramPacket;ImportJava.net.DatagramSocket;Importjava.net.InetAddress;/** Implementation of the UDP protocol send side: * The class that implements the encapsulated data Java.net.DatagramPacket your data wrapping * Class Java.net.DatagramSocket data transmission send the packet out * * Implementation steps: * 1. Create the Datagrampacket object, encapsulate the data, receive the address and port * 2. Create Datagramsocket * 3. Call the Datagramsocket class method send, which sends the packet * 4. Close Resource * * Datagrampacket construction Method: * Datagrampacket (byte[] buf, int length, inetaddress address, int port) * * Datagramsocket Construction Method: * Datagramsocket () Null parameter * method: Send (Datagrampacket d) **/ Public classUdpsend { Public Static voidMain (string[] args)throwsioexception{//Create a Packet object, encapsulate the data to be sent, receive-side IP, Port byte[] date = "Hello UDP". GetBytes (); //Create a InetAddress object that encapsulates its own IP addressInetAddress inet = Inetaddress.getbyname ("127.0.0.1"); Datagrampacket DP=NewDatagrampacket (date, date.length, inet,6000); //Create a Datagramsocket object, send and receive objects for a packetDatagramsocket ds =NewDatagramsocket (); //method of calling DS object send, send packetDs.send (DP); //Close ResourceDs.close (); }}
UDP Receive End
Importjava.io.IOException;ImportJava.net.DatagramPacket;ImportJava.net.DatagramSocket;/** Implement UDP Receiver * Implement package packet Java.net.DatagramPacket data packet * Implement output transmit Java.net.DatagramSocket receive packet * * Implementation steps: * 1. Create the Datagramsocket object, bind the port number * to be the same as the sender port number * 2. Creates an array of bytes, receiving the data sent by * 3. Create a Packet object Datagrampacket * 4. Call the Datagramsocket object method * Receive (Datagrampacket DP) and put the data in the packet * 5. Unpacking * Sent IP address * Packet Object Datagrampacket method GetAddress () Gets the IP address object of the sending end * The return value is inetaddress object * Number of bytes received * Packet Object Datagrampacket method getlength () * Sender's port number * Packet Object Datagrampacket method Getport () Send Port * 6. Close Resource*/ Public classudpreceive { Public Static voidMain (string[] args)throwsIOException {//Creating a Packet transport object Datagramsocket binding port numberDatagramsocket ds =NewDatagramsocket (6000); //creating a byte array byte[] data =New byte[1024]; //creating a Packet object, passing a byte arrayDatagrampacket DP =Newdatagrampacket (data, data.length); //Call the DS object method receive to pass the packetDs.receive (DP); //Gets the IP address object for the Send sideString ip=dp.getaddress (). gethostaddress (); //get the port number sent intPort =Dp.getport (); //Gets the number of bytes received intLength =dp.getlength (); System.out.println (NewString (data,0,length) + "..." +ip+ ":" +port); Ds.close (); }}
Expansion: Using UDP to implement keyboard input chat
UDP Send Side
Importjava.io.IOException;ImportJava.net.DatagramPacket;ImportJava.net.DatagramSocket;Importjava.net.InetAddress;ImportJava.util.Scanner;/** Implementation of UDP send, keyboard input form * Input completed, sent to the receiving end*/ Public classUdpsend { Public Static voidMain (string[] args)throwsioexception{Scanner SC=NewScanner (system.in); Datagramsocket DS=NewDatagramsocket (); InetAddress inet= Inetaddress.getbyname ("127.0.0.1"); while(true) {String message=Sc.nextline (); /*if ("886". Equals (Message)) {break; }*/ byte[] Date =message.getbytes (); Datagrampacket DP=NewDatagrampacket (date, date.length, inet,6000); Ds.send (DP); } //ds.close (); }}
UDP Receive End
Importjava.io.IOException;ImportJava.net.DatagramPacket;ImportJava.net.DatagramSocket;/** Implementation of UDP receiver * Never stop receiving end*/ Public classudpreceive { Public Static voidMain (string[] args)throwsIOException {//Creating a Packet transport object Datagramsocket binding port numberDatagramsocket ds =NewDatagramsocket (6000); //creating a byte array byte[] data =New byte[1024]; //creating a Packet object, passing a byte array while(true) {Datagrampacket DP=Newdatagrampacket (data, data.length); //Call the DS object method receive to pass the packetDs.receive (DP); //Gets the IP address object for the Send sideString ip=dp.getaddress (). gethostaddress (); //get the port number sent intPort =Dp.getport (); //Gets the number of bytes received intLength =dp.getlength (); System.out.println (NewString (data,0,length) + "..." +ip+ ":" +port); } //ds.close (); }}
TCP Client (sender side)
Importjava.io.IOException;ImportJava.io.InputStream;ImportJava.io.OutputStream;ImportJava.net.Socket;/** Implement TCP client , connect to server * and server implement data exchange * Implement TCP client program class Java.net.Socket * * Constructor Method: * Socket (String host, int port) Recursive server IP and port number * Note: The construction method will be connected to the server as long as it is running, the connection fails, the exception is thrown * * OutputStream Getoutputstream () returns the output stream of socket * Function: Data output , Output to Server * * InputStream getinputstream () return socket input stream * Function: Read data from server * * Client server data exchange, must use socket object in socket Get the IO stream, own new stream, no*/ Public classTCPClient { Public Static voidMain (string[] args)throwsIOException {//create a socket object to connect to the serverSocket socket =NewSocket ("127.0.0.1", 8888); //through the client socket object socket method, gets the byte output stream, writes the data to the serverOutputStream out =Socket.getoutputstream (); Out.write ("Server OK". GetBytes ()); //reads the data sent back by the server, using the byte input stream in the socket socket objectInputStream in =Socket.getinputstream (); byte[] data =New byte[1024]; intLen =in.read (data); System.out.println (NewString (data,0, Len)); Socket.close (); }}
TCP Server (Receive side)
PackageCn.itcast.demo3;Importjava.io.IOException;ImportJava.io.InputStream;ImportJava.io.OutputStream;ImportJava.net.ServerSocket;ImportJava.net.Socket;/** Implementation of the TCP server program * represents the class of the server program Java.net.ServerSocket * Construction Method: * ServerSocket (int port) Pass Port number * Important thing: You have to get the client's sleeve Socket Object Socket * Socket accept ()*/ Public classTCPServer { Public Static voidMain (string[] args)throwsioexception{ServerSocket Server=NewServerSocket (8888); //call the method in the server socket object accept () to get the client socket objectSocket socket =server.accept (); //through the client socket object, the socket gets the byte input stream and reads the data sent by the client .InputStream in =Socket.getinputstream (); byte[] data =New byte[1024]; intLen =in.read (data); System.out.println (NewString (data,0, Len)); //The server returns the data to the client, the byte output stream, and the byte output stream through the client socket objectOutputStream out =Socket.getoutputstream (); Out.write ("Roger that, thank you.". GetBytes ()); Socket.close (); Server.close (); }}
"Network Programming" inetaddress, TCP, UDP