1、使用无连接的数据报(UDP)进行通信
(1)什么是Datagram?
- 数据报是网上传输的独立数据包,数据报是否能够正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
(2)Java中使用Datagram与DatagramPacket类来完成数据报(UDP)进行通信。
(3)DatagramSocket类利用UDP协议来实现客户与服务器的Socket。
(4)send:发送数据报
(5)recieve:接收数据报
2、基于UDP的Socket编程
本个示例包含两端代码:UDPServer和UDPClient。UDPServer先启动,并等待UDPClient和自己打招呼。当UDPClient和自己打招呼后,UDPServer回应UDPClient。具体代码如下:
(1)UDPServer
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* 使用UDP进行通信
* 服务端
* @author Chuan
*
*/
public class UDPServer
{
public static void main(String[] args) throws IOException
{
DatagramSocket ds = new DatagramSocket(5000);
/*
* 接收客户端的消息
*/
//创建用于接收客户端发送的数据报的数据报
byte[] buffer = new byte[1024];
DatagramPacket packetRec = new DatagramPacket(buffer, buffer.length);
ds.receive(packetRec);
//处理接收到的数据
String msg = new String(buffer, 0, packetRec.getLength()); //packetRec.getLength()
System.out.println(msg);
/*
* 向客户端发送消息
*/
byte[] str = "welcom".getBytes();
DatagramPacket packetSend = new DatagramPacket(str, str.length,
packetRec.getAddress(),packetRec.getPort());
ds.send(packetSend);
//关闭socket
ds.close();
}
}
(2)UDPClient
/**
* 使用UDP进行通信
* 客户端
* @author Chuan
*
*/
public class UDPClient
{
public static void main(String[] args) throws IOException
{
DatagramSocket dS = new DatagramSocket();
/*
* 向服务端发送消息
*/
byte[] str = "hello".getBytes();
DatagramPacket dpSend = new DatagramPacket(str, str.length,
InetAddress.getByName("localhost"),5000);
dS.send(dpSend);
/*
* 接收服务端的消息
*/
byte[] msg = new byte[1024];
DatagramPacket dpRecieve = new DatagramPacket(msg, msg.length);
dS.receive(dpRecieve);
System.out.println(new String(msg, 0, dpRecieve.getLength()));
dS.close();
}
}
网友评论