色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Java實現UDP通信過程實例分析【服務器端與客戶端】

瀏覽:74日期:2022-09-02 08:35:58

本文實例講述了Java實現UDP通信過程。分享給大家供大家參考,具體如下:

TCP是一種面向連接的傳輸層協議,而UDP是傳輸層中面向無連接的協議,故傳送的數據包不能保證有序和不丟失,實現UDP通信主要用到了兩個類:DatagramPacket和DatagramSocket。

DatagramSocket

這個類用來表示發送和接收數據包的套接字。

//構造方法,創建數據報套接字并將其綁定到本地主機上的指定端口DatagramSocket socket = new DatagramSocket(0);

DatagramPacket

表示數據報包,用來實現無連接的包的投遞服務。這些數據包選擇不同的路由,經過計算機的存儲轉發,最終到達目的計算機。所以到達的數據包和發送時的順序不一定會相同。

Java實現UDP通信過程實例分析【服務器端與客戶端】

Sever端程序

一,調用DatagramSocket(int port)創建一個數據報套接字,綁定在指定端口上;二,調用DatagramPacket(byte[] buf,int length),建立一個字節數組來接收UDP包;三,調用DatagramSocket.receive();四,最后關閉數據報套接字。

Client端程序

一,調用DatagramSocket()創建一個數據報套接字;二,調用DatagramPacket(byte[] buf,int offset,InetAddress address,int port),建立要發送的UDP包三,調用DatagramSocket類的send方法發送數據包;四,關閉數據報套接字。

數據報套接字發送成功后,相當于建立了一個虛連接,雙方可以發送數據。

實例

服務器端:

/* * 服務器端,實現基于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(); }}

客戶端:

/* * 客戶端 */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(); }}

更多關于java相關內容感興趣的讀者可查看本站專題:《Java Socket編程技巧總結》、《Java文件與目錄操作技巧匯總》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
相關文章:
主站蜘蛛池模板: 久久国产精品成人免费 | 欧美一级va在线视频免费播放 | 欧美三级aaa| 久热精品男人的天堂在线视频 | 国产在线一区二区三区欧美 | 国产真实搭讪系列 | 久久久久久久久影院 | 久久国产一级毛片一区二区 | 久久精品视频播放 | 九九九九在线视频播放 | 五月色婷婷琪琪综合伊人 | 国产精品久久久久无码av | www女人| 五月激激激综合网色播免费 | 黄网站色成年小说系列 | 国产亚洲精品久久久久久无 | 久草草视频在线观看免费高清 | 亚洲黄色软件 | 日韩亚洲成a人片在线观看 日韩亚洲精品不卡在线 | 日韩欧美毛片免费观看视频 | 久久久久在线 | 在线成人aa在线看片 | 在线免费看黄色 | 国产一级在线现免费观看 | 欧美一区二区三区日韩免费播 | 亚洲精品国产专区91在线 | bt天堂国产亚洲欧美在线 | 亚洲精品一区亚洲精品 | 免费在线黄色网址 | 91久久香蕉国产线看 | 久久国产精品久久 | 久久精品国产400部免费看 | 免费的毛片 | 欧美三级成版人版在线观看 | 欧美日韩综合精品一区二区三区 | 亚洲人视频在线观看 | 亚洲视频一区在线观看 | 亚洲成a人片在线观看 欧美 | 九九在线免费观看视频 | 亚洲在线观看 | 久久羞羞 |