JAVA Socket编程(一)之UDP通信

常见的通讯协议有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

欢迎大家一起说出自己的想法。
上一篇:关于递归调用,实现树形菜单的样式


下一篇:关于openOffice对于word的转换及遇到的问题