java基礎 UDP通信
阿新 • • 發佈:2018-03-10
cal 圖片 new 數據 實現 等待 AI test throws
無連接通信 UDP
客戶端
package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; /*使用UDP通信編寫一個Java程序.要求:獲取鍵盤輸入的內容.發送到服務端.服務端接收後.在控制臺上打印接收到的內容 客戶端 1.創建鍵盤錄入對象.獲取鍵盤錄入數據 2.創建DatagramSocket對象 3.創建DatagramPacket對象.並封裝鍵盤錄入的數據 4.發送數據 5.釋放流資源 服務端 1.創建DatagramSocket對象 2.創建DatagramPacket對象 3.接收數據存儲到DatagramPacket對象中 4.獲取DatagramPacket對象的內容 5.在控制臺上打印接收到的內容 6.釋放流資源*/ public class DemoUDPClient { public static void main(String[] args) throws IOException { Scanner scan=new Scanner(System.in); System.out.println("請輸入要傳達的內容:"); String str=scan.nextLine(); DatagramSocket datagramSocket=new DatagramSocket(); byte[] buf=str.getBytes(); DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.105.22"),6464); datagramSocket.send(datagramPacket); datagramSocket.close(); } }
服務端
package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;/*使用UDP通信編寫一個Java程序.要求:獲取鍵盤輸入的內容.發送到服務端.服務端接收後.在控制臺上打印接收到的內容 客戶端 1.創建鍵盤錄入對象.獲取鍵盤錄入數據 2.創建DatagramSocket對象 3.創建DatagramPacket對象.並封裝鍵盤錄入的數據 4.發送數據 5.釋放流資源 服務端 1.創建DatagramSocket對象 2.創建DatagramPacket對象 3.接收數據存儲到DatagramPacket對象中 4.獲取DatagramPacket對象的內容 5.在控制臺上打印接收到的內容 6.釋放流資源 */ public class DemoUDPServer { public static void main(String[] args) throws IOException { DatagramSocket datagramSocket=new DatagramSocket(6464); InetAddress ip=InetAddress.getLocalHost(); String ipString=ip.getHostAddress(); String nameString=ip.getHostName(); System.out.println(ipString+" "+nameString); byte[] buf=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(buf,1024); datagramSocket.receive(datagramPacket); System.out.println(new String(buf)); datagramSocket.close(); } }
結果
有連接通信TCP
客戶端
package com.swift.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /*使用socket編寫一個Java程序,要求:客戶端發送內容“我是客戶端”到服務端,服務端接收後,在控制臺上打印接收到的內容,並返回內容“我來自服務端”到客戶端,客戶端接收服務端的發送的內容後將接收內容打印在控制臺 ?客戶端 1.創建客戶端的Socket對象 2.獲取Socket的輸出流對象 3.寫數據給服務器 4.獲取Socket的輸入流對象 5.使用輸入流,讀反饋信息 6.關閉流資源 */ public class DemoTCPClient { public static void main(String[] args) throws IOException { Socket s=new Socket(InetAddress.getByName("10.254.3.116"),8888); OutputStream out=s.getOutputStream(); byte[] buf="我是客戶端".getBytes(); out.write(buf); InputStream in=s.getInputStream(); byte[] bytes=new byte[128]; in.read(bytes); System.out.println(new String(bytes));
s.close(); } }
服務端
package com.swift.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /*使用socket編寫一個Java程序,要求:客戶端發送內容“我是客戶端”到服務端,服務端接收後,在控制臺上打印接收到的內容,並返回內容“我來自服務端”到客戶端,客戶端接收服務端的發送的內容後將接收內容打印在控制臺 ?服務器端 1.創建服務器端ServerSocket對象,指定服務器端端口號 2.開啟服務器,等待著客戶端Socket對象的連接,如有客戶端連接,返回客戶端的Socket對象 3.通過客戶端的Socket對象,獲取客戶端的輸入流,為了實現獲取客戶端發來的數據 4.通過客戶端的輸入流,獲取流中的數據 5.通過客戶端的Socket對象,獲取客戶端的輸出流,為了實現給客戶端反饋信息 6.通過客戶端的輸出流,寫數據到流中 7.關閉流資源*/ public class DemoTCPServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket=new ServerSocket(8888); InetAddress ip=InetAddress.getLocalHost(); System.out.println(ip.getHostAddress()); Socket s=serverSocket.accept(); InputStream in=s.getInputStream(); byte[] buf=new byte[128]; in.read(buf); System.out.println(new String(buf)); OutputStream out=s.getOutputStream(); out.write("我來自服務端".getBytes());
serverSocket.close();
s.close();
} }
java基礎 UDP通信