UDP的接收端
建立UDP接收端的思路
1.建立udp socket服务
2.创建数据包用于存储接收到的数据. 方便用数据包对象的方法解析这些数据.
3.使用socket服务的receive方法将接受的数据存储到数据包中.
4.通过数据包的方法解析数据包中数据.
5.关闭资源
实现:
一般端口号1 - > 1024
大多被系统所用…所用经量用1024之后的端口号
端口的最高位为只有65535
//导包
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPRecDemo {
public static void main(String[] args) throws IOException{ //抛异常
System.out.println("接收端启动.....");
//建立socket服务 设端口号为10000
DatagramSocket ds = new DatagramSocket(10000);
//创建数据包
byte[] buf = new byte[1024];
DatagramPacket dq = new DatagramPacket(buf, buf.length);
//3.使用接收方法将数据存储到数据包中
ds.receive(dq); //阻塞式
//4.通过数据包对象的方法,解析其中的数据, 比如: 地址, 端口, 数据内容
//地址
String ip = dq.getAddress().getHostAddress();
//端口
int port = dq.getPort();
//数据内容
String txt = new String(dq.getData(), 0, dq.getLength());
//输出所有内容
System.out.println(ip+": "+port+": "+txt);
//关闭
ds.close();
}
}
建立 UDP传输的发送端思路:
1.建立udp的socket服务, 因为是要接收数据,必须明确一个端口号.
2.将要发送的数据,封装到数据包种.
3.通过udp的socket服务将数据包发送出去
4.关闭socket服务
实现:
import java.io.IOException;
import java.net.*;
public class UDPSeedDemo {
public static void main(String[] args) throws IOException {
System.out.println("发送端启动....");
//建立socket服务
DatagramSocket ds = new DatagramSocket();
//将要发送的数据封装到数据包中
String str = "udp传输演示: Hello World";
//使用DatagramPacket将数据封装到该对象中
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length, InetAddress.getByName("127.0.0.1"), 10000);
//通过udp的socket服务将数据包发送出去,使用send方法
ds.send(dp);
//关闭资源
ds.close();
}
}
这里启动不管是先运行发送端或者接收端都是可以的…
因为并不需要建立连接…
但是如果在接收端没先运行…
先运行发送端…这样是接收不到内容的…
运行结果:
先执行接收端
这里由于ds.receive(dq);
会形成阻塞…需要发送端发送内容给它接收才会往下执行
执行发送端
这时再看接收端
这里只弄了一次性接收的…
可以通过IO流进行自己通过发送聊天信息到接收端