send
package myNetworkDemo;
import java.io.IOException;
import java.net.*;
public class UDPSendDemo {
public static void main(String[] args) throws IOException {
//public DatagramSocket(); 构造数据包套接字并将其绑定到本地主机上的任何可用端口
DatagramSocket ds = new DatagramSocket();
//public DatagramPacket(byte buf[], int length, InetAddress address, int port);
byte[] bytes = "hello world...".getBytes();
// int length = bytes.length;
// InetAddress address = InetAddress.getByName("192.168.61.1");
// int port = 10086;
// DatagramPacket dp = new DatagramPacket(bytes, length, address, port);
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.61.1"), 10086);
//public void send(DatagramPacket p); 发送数据报包
ds.send(dp);
//public void close(); 关闭套接字
ds.close();
}
}
receive
package myNetworkDemo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPReceiveDemo {
public static void main(String[] args) throws IOException {
//public DatagramSocket(int port); 构造数据报套接字并将其绑定带本机主机上的指定接口
DatagramSocket ds = new DatagramSocket(10086);
//public DatagramPacket(byte buf[], int length); 构造一个数据报包用于接收长度为length的包
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
//public synchronized void receive(DatagramPacket p); 接收数据报包
ds.receive(dp);
//解析数据报包
//public synchronized byte[] getData(); 返回数据缓冲区
// byte[] datas = dp.getData();
//public synchronized int getLength(); 返回要发送的数据的长度或接收到的数据的长度
// int len = dp.getLength();
// String dataString = new String(datas, 0, len);
// System.out.println("数据是:" + dataString);
System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
//关闭接收端
ds.close();
}
}
在控制台输入:
package myNetworkDemo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPSend2Demo {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
if ("886".equals(line)) {
break;
}
byte[] bytes = line.getBytes();
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.61.1"), 12345);
ds.send(dp);
}
ds.close();
}
}
package myNetworkDemo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPReceive2Demo {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(12345);
while (true) {
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
}
// ds.close();
}
}