Java中网络通讯也称作Socket(套接字、插座),要通讯的两台机器必须安装Socket.
不同的协议就有不同的Socket。
udp通讯协议特点:
1.将数据及其源和目的的封装为数据包,面向无连接
2.每个数据包大小限制64K中
3.因为无连接,所以不可靠
4.因为无连接,所以速度快
5.udp通讯部分客户端和服务端的,分发送端和接收端
比如:物管的对讲机,feiQ,qq,游戏。。。
UDP协议的Socket:
DatagramSocket UDP插座服务
DatagramPacket 数据包类
DatagramPacket(buf, length, address,port)
buf:发送数据的内容
length:发送数据内容的长度
address:发送的目的IP地址对象
port:端口号
发送端的使用步骤:
1.建立udp服务
2.准备数据,把数据封装到数据包中。发送端的数据包要带上IP地址和端口号
3.调用udp服务
4.关闭资源
接收端的使用步骤:
1.建议udp服务
2.准备空的数据包接收数据
3.调用udp服务
4.关闭资源
package cn.udp;
importjava.io.IOException;
importjava.net.DatagramPacket;
importjava.net.DatagramSocket;
importjava.net.InetAddress;
public class Demo1sender {
public static void main(String[] args) throws IOException {
//建立udp服务
DatagramSocket datagramSocket=new DatagramSocket();
//准备数据,把数据封装到数据包中
String data="这是一个UDP的例子";
DatagramPacket packet=new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(), 9090);
//调用UDP的服务发送数据包
datagramSocket.send(packet);
//关闭资源---实际上就是释放占用的端口号
datagramSocket.close();
}
}
package cn.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
接收端的使用步骤:
1.建议udp服务
2.准备空的数据包接收数据
3.调用udp服务
4.关闭资源
*/
public class Demo1Receive {
//接受端
public static void main(String[] args) throws IOException {
//建立udp服务
DatagramSocket socket=new DatagramSocket(9090);
//准备空的数据包,用于存储数据
byte[] buf=new byte[1024];
DatagramPacket packet=new DatagramPacket(buf, buf.length);
//调用udp服务
socket.receive(packet);//
//数据实际上就是存储到了byte字节数组中
//packet.getLength();获取到了数据的长度
System.out.println("接收到的数据"+new String(buf,0,packet.getLength()));
//关闭资源
socket.close();
}
控制台运行接收端,当没有接收到数据时,一直在等待
Cmd运行发送端
在cmd运行后,接受端接收到数据,程序停止
}