常见的通讯协议有udp和tcp。
--将数据及源、目的封装在数据包中,不需要建立连接;
--每个数据包的大小限制在64k以内;
--因无连接,是不可靠协议;
--不需要建立连接,所以传输速度快,但是容易丢失数据;
总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送。
日常中使用Udp技术的软件有:飞秋、视频会议等;
分为客户端、服务器端
服务器段代码如下:
1 package udp; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 6 public class Server { 7 public static void main(String[] args) { 8 DatagramSocket ds=null; 9 DatagramPacket dp=null; 10 try { 11 ds=new DatagramSocket(9000);//服务端口 12 byte[] b=new byte[1024];//用于接收客户端的数据 13 dp=new DatagramPacket(b, b.length); 14 ds.receive(dp);//接收 15 String me=new String (dp.getData(),0,dp.getLength());//得到字符串 16 System.out.println(me); 17 18 19 20 21 ds=new DatagramSocket(); 22 String me2="ok"; 23 dp=new DatagramPacket(me2.getBytes(), me2.length(), dp.getAddress(), dp.getPort());//直接根据数据报获取到获取数据的地址,端口 24 ds.send(dp);//响应数据 25 } catch (Exception e) { 26 // TODO: handle exception 27 e.printStackTrace(); 28 } 29 } 30 }
客户端代码如下:
1 package udp; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.InetAddress; 6 7 public class Client { 8 public static void main(String[] args) { 9 DatagramSocket ds=null; 10 DatagramPacket dp=null; 11 try { 12 ds=new DatagramSocket(); 13 String message="hello"; 14 dp=new DatagramPacket(message.getBytes(), message.length(), InetAddress.getByName("localhost"), 9000); 15 ds.send(dp); 16 17 18 byte[] b=new byte[1024]; 19 dp=new DatagramPacket(b, b.length); 20 ds.receive(dp); 21 String me=new String (dp.getData(),0,dp.getLength()); 22 System.out.println(me); 23 24 } catch (Exception e) { 25 // TODO: handle exception 26 e.printStackTrace(); 27 } 28 } 29 }
tcp编程查看:http://www.cnblogs.com/GH0522/p/8119533.html
欢迎大家一起说出自己的想法。