UDP服务端
package com.xykj.demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
try {
//创建DatagramSocket 并指定 端口号9000
DatagramSocket mDatagramSocket = new DatagramSocket(9000);
byte[] data = new byte[1024];
//接收一个快件 数据包 --- 数据将存放在data 中,data.length 指的是 缓冲区的大小
DatagramPacket mDatagramPacket = new DatagramPacket(data, data.length);
//mDatagramSocket 接收数据,数据都装在mDatagramPacket中
//堵塞的方法
mDatagramSocket.receive(mDatagramPacket);
//将接收到的数据转化为字符串 mDatagramPacket.getData() 指的是data mDatagramPacket.getLength() 指的是接收的长度
String messageString = new String(mDatagramPacket.getData(),0,mDatagramPacket.getLength());
//获取到对方的IP地址
System.out.println(mDatagramPacket.getAddress());
//获取到对方的端口号
System.out.println(mDatagramPacket.getPort());
System.out.println(messageString);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
UDP客户端
package com.xykj.demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Demo {
public static void main(String[] args) {
try {
//创建一个DatagramSocket 指定端口号为8888
DatagramSocket mDatagramSocket = new DatagramSocket(8888);
//打包想要发送的数据,包括填写对方的IP 端口等数据,
//以确保数据可以到达对方手上
DatagramPacket mPacket = new DatagramPacket("hello".getBytes(), ""
"hello".getBytes().length, InetAddress.getByName("127.0.0.1"),
9000);
//mDatagramSocket 调用send方法发送数据包mPacket
//通知快递员将包裹发送出去
mDatagramSocket.send(mPacket);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}