UDP
一种无连接的协议,具有资源消耗少,处理速度快的优点,重要特点是无连接,不存在服务器和客户端,只存在接受者和发送者。
发送者
/*public DatagramPacket(byte[] buf,
int length,
InetAddress address,
int port)- buf - 包数据。
length - 包长度。
address - 目的地址。
port - 目的端口号。
*/
- buf - 包数据。
public class TestSend {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
String message = "6666666";
byte[] bytes = message.getBytes();
int length = message.length();
InetAddress ia = InetAddress.getByName("lf");
DatagramPacket dp = new DatagramPacket(bytes, length, ia, 10088);
ds.send(dp);
ds.close();
//另一种:
// DatagramSocket ds = new DatagramSocket();
// Scanner scanner=new Scanner(System.in);
// String line=null;
// while((line=scanner.nextLine())!=null) {
// byte[] bytes = line.getBytes();
// int length = message.length();
// InetAddress ia = InetAddress.getByName(“lf”);
// DatagramPacket dp = new DatagramPacket(bytes, length, ia, 10088);
// ds.send(dp);
// ds.close();
//
// }
}
}
接受者
public class TestReceive {public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10086);// 端口
while (true) {
byte[] b = new byte[1024 * 3];// 用字节数组存储接受到的信息
int len = b.length;
DatagramPacket dp = new DatagramPacket(b, len);
ds.receive(dp);byte[] data = dp.getData(); int length = dp.getLength(); String string = new String(data, 0, length);// 将数据转换为字符串,之后打印出来 String hostName = dp.getAddress().getHostName(); String hostAddress = dp.getAddress().getHostAddress(); System.out.println(string + "是接收到的信息" + hostAddress + "是对方IP地址" + hostName + "是对方主机名"); // ds.close();服务器一般不会关闭 }
}
}