常见的通讯协议有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
欢迎大家一起说出自己的想法。