Protocols that can be used in Java communication include TCP protocol and UDP protocol
UDP Protocol Concepts
The full name of the UDP protocol is the User Datagram Protocol, which is used in the network as the TCP protocol for processing packets, but it is a non-connected protocol. In the OSI model, the fourth layer, the transport layer, is in the upper layer of the IP protocol. UDP has the disadvantage of not providing packet grouping, assembling, or sorting packets, that is, when the message is sent, it is not possible to know whether or not it arrives safely and completely.
In summary: UDP does not provide a reliable guarantee to ensure that the data accurate to arrive at the destination
Why use UDP when choosing to use the protocol, the choice of UDP must be cautious? In the network quality is not very satisfied with the environment, UDP packet loss will be more serious? But because of the characteristics of UDP: it does not belong to the connection protocol, thus has the advantage of small resource consumption, processing speed, so usually the audio ? video and normal data are transmitted with more UDP, because they lose one or two packets at a time, and do not have too much effect on receiving results? For example, we chat with ICQ and OICQ is the use of the UDP protocol?
Use steps
The core classes of UDP in Java are datagramsocket and datagrampacket
Specific Use steps:
1, a new Datagramsocket;
2, through the Datagrampacket to undertake the package;
3. Receive by using Receive method;
4. Read data converted to string
manipulating UDP in Java
With the Datagramsocket and Datagrampacket classes located under the Java.net package in the JDK, you can easily control user data messages?
Before describing them, you must understand the InetAddress class at the same location? InetAddress implements the java.io. Serializable interface, which does not allow inheritance? It is used to describe and wrap an Internet IP address, returning a inetaddress instance through three methods:
Getlocalhost (): Returns an instance of the encapsulated local address?
Getallbyname (String Host): Returns an array of inetaddress instances that encapsulate the host address?
Getbyname (String Host): Returns an instance that encapsulates the host address? Where host can be a domain name or a legitimate IP address?
The Datagramsocket class is used to create a socket instance that receives and sends a UDP protocol? And the socket class relies on the SocketImpl class, The implementation of the Datagramsocket class also relies on the Datagramscoketimplfactory class specifically designed for it? There are 3 builders of the Datagramsocket class:
Datagramsocket (): Create an instance? This is a very special use, usually for client programming, it does not have a specific listening port, just use a temporary?
Datagramsocket (int port): Create an instance and pin the messages that listen to port ports?
Datagramsocket (int port, inetaddress localaddr): This is a very useful builder, when a machine has more than one IP address, the instance created by it only receives messages from LOCALADDR.
It is important to note that when creating an instance of the Datagramsocket class, if the port is already in use, a SocketException exception is thrown, and the program terminates illegally, should the exception be taken into the trap? The main methods of the Datagramsocket class are 4:
Receive (Datagrampacket D): Receives data message to D? The Receive method produces a "block"?
Send (Datagrampacket D): Send paper D to destination?
Setsotimeout (int timeout): Set the time-out period in milliseconds?
Close (): Close Datagramsocket? When an application exits, it usually releases the resource voluntarily, shutting down the socket, but could cause the resource not to be recycled due to an abnormal exit. Therefore, you should actively use this method to close the socket when the program is completed. Or close the socket after catching the exception thrown?
"Blocking" is a professional noun that produces an internal loop that causes the program to pause in this place until a condition triggers
Sample code
{server that receives data} byte[] buf = new byte[1000]; Datagramsocket ds = new Datagramsocket (12345);//Start monitoring 12345 ports datagrampacket IP = new Datagrampacket (buf, Buf.length) ;//Create an instance of the receiving datagram while (true) {ds.receive (IP);//block until you receive the datagram and load the data into the IP System.out.println (new String (BUF)) ;} {Client sending data} InetAddress target = inetaddress.getbyname ("www.xxx.com");//Gets the address instance of the target machine datagramsocket ds = new Datagramsocket ( 9999);//Send datagram from 9999 port String hello = "Hello, I am come in!"; /data to be sent byte[] buf = Hello.getbytes ();//Convert data to byte type op = new Datagrampacket (buf, Buf.length, Target, 12345) ;//Package The data in the BUF buffer ds.send (OP);//Send data
Java uses UDP