JAVA 網路程式設計(簡單的傳送端和接受端)
阿新 • • 發佈:2019-02-19
/*
UDP
1,將資料及源和目的封裝成資料包中,不需要建立連線
2,每個資料報的大小在限制在64k
3,因為無連線,是不可靠協議的
4,不需要建立連線,速度快
TCP
1,建立連線,形成傳輸資料的通道
2,在連線中進行最大資料量傳輸
3,通過三次握手完成連線,是可靠傳輸協議
4,必須建立連線,效率會稍低
Socket
1,Socket 就是為了網路服務提供的一種機制
2,通訊的兩端都有Socket
3,網路通訊其實就是Socket之間的通訊
4,資料在兩個Socket間通過IO傳輸
*/
import java.net.*; import java.io.*; //傳送端 class UDPSend { public static void main(String []args) throws Exception { //1,建立UDP服務 通過DatagramSocket 物件 DatagramSocket ds = new DatagramSocket(); //鍵盤錄入 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = bufr.readLine()) != null) { if("Bye".equals(line)) break; //將字串轉變成位元組流 byte [] buf = line.getBytes(); //2,確定資料 並封裝成資料包 DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.1"),1000); //3 通過socket 服務 將已有的資料包傳送出去 通過send 方法 ds.send(dp); } //關閉資源 ds.close(); } } class UDPRecv { public static void main(String []args) throws Exception { // 1 建立UDP socket 此處設定埠號為1000 DatagramSocket ds = new DatagramSocket(1000); while(true) { //2 定義資料包 用於儲存資料 byte []buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); //3 通過服務的receive 方法將收到的資料存入資料包中 ds.receive(dp); //4 通過資料包的方法獲取其中的資料 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); System.out.println(ip + "::"+data); } //關閉資源 ds.close(); } }