JAVA Socket编程(一)之UDP通信

时间:2021-06-25 21:04:52

常见的通讯协议有udp和tcp。

--将数据及源、目的封装在数据包中,不需要建立连接;

--每个数据包的大小限制在64k以内;

--因无连接,是不可靠协议;

--不需要建立连接,所以传输速度快,但是容易丢失数据;

总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送。

日常中使用Udp技术的软件有:飞秋、视频会议等;

分为客户端、服务器端

服务器段代码如下:

 package udp;

 import java.net.DatagramPacket;
import java.net.DatagramSocket; public class Server {
public static void main(String[] args) {
DatagramSocket ds=null;
DatagramPacket dp=null;
try {
ds=new DatagramSocket(9000);//服务端口
byte[] b=new byte[1024];//用于接收客户端的数据
dp=new DatagramPacket(b, b.length);
ds.receive(dp);//接收
String me=new String (dp.getData(),0,dp.getLength());//得到字符串
System.out.println(me); ds=new DatagramSocket();
String me2="ok";
dp=new DatagramPacket(me2.getBytes(), me2.length(), dp.getAddress(), dp.getPort());//直接根据数据报获取到获取数据的地址,端口
ds.send(dp);//响应数据
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

客户端代码如下:

 package udp;

 import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class Client {
public static void main(String[] args) {
DatagramSocket ds=null;
DatagramPacket dp=null;
try {
ds=new DatagramSocket();
String message="hello";
dp=new DatagramPacket(message.getBytes(), message.length(), InetAddress.getByName("localhost"), 9000);
ds.send(dp); byte[] b=new byte[1024];
dp=new DatagramPacket(b, b.length);
ds.receive(dp);
String me=new String (dp.getData(),0,dp.getLength());
System.out.println(me); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

tcp编程查看:http://www.cnblogs.com/GH0522/p/8119533.html