Java通過Socket實現UDP程式設計及Socket總結
阿新 • • 發佈:2019-01-03
UDPServer.java
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* * 伺服器端,實現基於UDP的使用者登陸 */ public class UDPServer { public static void main(String[] args) throws IOException { /* * 接收客戶端傳送的資料 */ //1.建立伺服器端DatagramSocket,指定埠 DatagramSocket socket=new DatagramSocket(8800); //2.建立資料報,用於接收客戶端傳送的資料 byte[] data =new byte[1024];//建立位元組陣列,指定接收的資料包的大小 DatagramPacket packet=new DatagramPacket(data, data.length); //3.接收客戶端傳送的資料 System.out.println("****伺服器端已經啟動,等待客戶端傳送資料"); socket.receive(packet);//此方法在接收到資料報之前會一直阻塞 //4.讀取資料 String info=new String(data, 0, packet.getLength()); System.out.println("我是伺服器,客戶端說:"+info); /* * 向客戶端響應資料 */ //1.定義客戶端的地址、埠號、資料 InetAddress address=packet.getAddress(); int port=packet.getPort(); byte[] data2="歡迎您!".getBytes(); //2.建立資料報,包含響應的資料資訊 DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port); //3.響應客戶端 socket.send(packet2); //4.關閉資源 socket.close(); } }
UDPClient.java
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /* * 客戶端 */ public class UDPClient { public static void main(String[] args) throws IOException { /* * 向伺服器端傳送資料 */ //1.定義伺服器的地址、埠號、資料 InetAddress address=InetAddress.getByName("localhost"); int port=8800; byte[] data="使用者名稱:admin;密碼:123".getBytes(); //2.建立資料報,包含傳送的資料資訊 DatagramPacket packet=new DatagramPacket(data, data.length, address, port); //3.建立DatagramSocket物件 DatagramSocket socket=new DatagramSocket(); //4.向伺服器端傳送資料報 socket.send(packet); /* * 接收伺服器端響應的資料 */ //1.建立資料報,用於接收伺服器端響應的資料 byte[] data2=new byte[1024]; DatagramPacket packet2=new DatagramPacket(data2, data2.length); //2.接收伺服器響應的資料 socket.receive(packet2); //3.讀取資料 String reply=new String(data2, 0, packet2.getLength()); System.out.println("我是客戶端,伺服器說:"+reply); //4.關閉資源 socket.close(); } }
Socket總結