UDP--DatagramSocket

来源:互联网 发布:一键必杀xkey软件 编辑:程序博客网 时间:2024/05/29 19:36
Java通过两个类DatagramSocket和DatagramPacket来支持Datagram socket。DatagramSocket实现了Datagram socket的基本功能,而DatagramPacket则提供了对包的一些支持。DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字
DatagramSocket的几个重要方法:
(1) DatagramSocket():随机绑定一个有效的端口;
(2) DatagramSocket(int port):绑定指定的端口;
(3)DatagramSocket(int aPort, InetAddress addr):绑定指定的端口和地址
(4) Void send(DatagramPacket p):发送数据报,由于目的地的地址信息已包含在数据报中,所以不需要在本函数中提供地址信息;
(5) synchronized void receive(DatagramPacket p):接收数据包,线程安全;
(6) synchronized void close():关闭socket;

DatagramPacket有以几个重要的方法:
(1) DatagramPacket(byte ibuf[], int ilength):用于接收数据报;
(2) DatagramPacket(byte ibuf[], int ilength, InetAddress iaddr, int iport):用于发送的数据报;
(3) byte[] getData();
(4) int getLength()
客户端发送数据代码:
InetAddress ia = InetAddress.getByName("127.0.0.1");     byte[] bs = "请叫我将军".getBytes("UTF-8");     DatagramPacket request = new DatagramPacket(bs, bs.length, ia, 8888);     DatagramSocket socket = new DatagramSocket();     socket.send(request);


服务器接收代码:
byte[] inbuf = new byte[256]; // 默认的数据缓冲大小    DatagramSocket socket = new DatagramSocket(8888);    // 等待数据    DatagramPacket packet = new DatagramPacket(inbuf, inbuf.length);    socket.receive(packet);    int numBytesReceived = packet.getLength();    System.out.println(new String(inbuf, 0, numBytesReceived, "UTF-8"));




原创粉丝点击