UDP服务器与客户端程序:
服务器:
package com.lemon.UDP;
import java.io.IOException;
import java.net.*;
/**
* 服务器端:
* @author lemonsun
*/
public class Server {
public static void main(String[] args) {
//1、发送的消息
String info = "goog good 学习!";
//2、消息转为字节数组
byte[] bytes = info.getBytes();
try {
/**
* DatagramPacket参数:
* buf - 数据包数据。
* offset - 分组数据偏移量。
* length - 分组数据长度。
* address - 目的地址。
* port - 目的端口号。
*/
//3、封装一个数据报包
DatagramPacket dp = new DatagramPacket(bytes,
0,
bytes.length,
InetAddress.getByName("127.0.0.1"),
8000);
//4、本程序的端口
DatagramSocket socket = new DatagramSocket(9000);
//5、发送数据
socket.send(dp);
//6、关闭
socket.close();
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
package com.lemon.UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
* 客户端:
*
* @author lemonsun
*/
public class Client {
public static void main(String[] args) {
//只接收1024字节
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
try {
//本程序的端口号
DatagramSocket socket = new DatagramSocket(8000);
System.out.println("正在接收数据中...");
//一开始是空包,没有数据过来 阻塞在这 等待
socket.receive(dp); //接受数据
String info = new String(dp.getData(),0,dp.getLength());
System.out.println(info);
socket.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
UDP:先打开客户端等待接受数据,再开启服务器发送数据