常見的通訊協定有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
歡迎大家一起說出自己的想法。