1.DatagramPacket 需要发信息的host和port
package edu.learn.foundation;
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 UDPServer implements Runnable {
public DatagramSocket datagramSocket;
public DatagramPacket datagramPacket;
public String info="Hello world";
public byte[] buf;
public static void main(String[] args) {
// TODO 自动生成的方法存根
UDPServer server =new UDPServer();
Thread serverThread = new Thread(server);
serverThread.run();
}
@Override
public void run() {
// TODO 自动生成的方法存根
try {
datagramSocket = new DatagramSocket(8001);
buf=info.getBytes();
datagramPacket = new DatagramPacket(buf, 0, buf.length);
InetAddress iaddr =InetAddress.getLocalHost();
datagramPacket.setAddress(iaddr);
datagramPacket.setPort(8005);
try {
datagramSocket.send(datagramPacket);
datagramSocket.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} catch (SocketException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (UnknownHostException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
package edu.learn.foundation;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPClient implements Runnable {
private DatagramSocket datagramSocket;
private DatagramPacket datagramPacket;
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("接收信息");
UDPClient client = new UDPClient();
Thread clientThread = new Thread(client);
clientThread.run();
}
@Override
public void run() {
// TODO 自动生成的方法存根
try {
datagramSocket = new DatagramSocket(8005);
byte[] buf=new byte[1024];
datagramPacket = new DatagramPacket(buf, 1024);
try {
datagramSocket.receive(datagramPacket);
String info=new String(buf);
System.out.println(info);
datagramSocket.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} catch (SocketException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
结果:
接收信息
Hello world