1:
package cn.tx.demo1;
//接收端(服务器)
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UdpServer {
public static void main(String[] args) {
//创建Socket对象 需要关闭的
DatagramSocket ds = null;
//初始化后处理异常
try {
ds = new DatagramSocket(10000);
//创建一个字节数组
byte[] bs =new byte[1024];
//创建数据包
DatagramPacket dp = new DatagramPacket(bs,bs.length);
System.out.println("UDP服务端已经启动.....");
while (true){
//接收数据
ds.receive(dp);
//出现红杠表示异常,把下面的socket去掉( catch (SocketException e) )就没有红杠了
//获得客户端的IP
InetAddress inetAddress = dp.getAddress();
//获得数据
byte[] data = dp.getData();
//获得传输的数据长度
int length = dp.getLength();
//变成字符串
String str = new String(bs,0,length);
System.out.println(inetAddress.getHostAddress()+"发送的数据:"+str);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//ds不是空的进行关闭
if (ds != null){
ds.close();
}
}
}
}
2:
package cn.tx.demo1;
//发送端(客户端),键盘输入
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 UdpClient {
public static void main(String[] args) {
//创建客户端的UDP的socket
DatagramSocket ds = null;
//BufferedReader:读取并返回一行String类型字符串
BufferedReader read = null;
read = new BufferedReader(new InputStreamReader(System.in));//从控制台输入
try {
ds = new DatagramSocket();
String line = null;
while ((line = read.readLine()) != null)//如果不是空就一直读
{
/*//创建数据包
String str = "大家好";*/
byte[] bs = line.getBytes();
DatagramPacket dp = new DatagramPacket(bs, bs.length,
InetAddress.getByName("192.168.0.100"), 10000);
//发送数据包
ds.send(dp);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (read != null){
//异常处理键:Ctrl+Alt+t 打开surround with 选第6个
try {
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(ds !=null){
ds.close();
}
}
}
}