av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

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

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

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

DatagramSocket

這個類用來表示發(fā)送和接收數(shù)據(jù)包的套接字。

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

DatagramPacket

表示數(shù)據(jù)報包,用來實現(xiàn)無連接的包的投遞服務。這些數(shù)據(jù)包選擇不同的路由,經(jīng)過計算機的存儲轉(zhuǎn)發(fā),最終到達目的計算機。所以到達的數(shù)據(jù)包和發(fā)送時的順序不一定會相同。

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

Sever端程序

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

Client端程序

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

數(shù)據(jù)報套接字發(fā)送成功后,相當于建立了一個虛連接,雙方可以發(fā)送數(shù)據(jù)。

實例

服務器端:

/* * 服務器端,實現(xiàn)基于UDP的用戶登陸 */public class UDPServer { public static void main(String[] args) throws IOException { /* * 接收客戶端發(fā)送的數(shù)據(jù) */ // 1.創(chuàng)建服務器端DatagramSocket,指定端口 DatagramSocket socket = new DatagramSocket(8800); // 2.創(chuàng)建數(shù)據(jù)報,用于接收客戶端發(fā)送的數(shù)據(jù) byte[] data = new byte[1024];// 創(chuàng)建字節(jié)數(shù)組,指定接收的數(shù)據(jù)包的大小 DatagramPacket packet = new DatagramPacket(data, data.length); // 3.接收客戶端發(fā)送的數(shù)據(jù) System.out.println('****服務器端已經(jīng)啟動,等待客戶端發(fā)送數(shù)據(jù)'); socket.receive(packet);// 此方法在接收到數(shù)據(jù)報之前會一直阻塞 // 4.讀取數(shù)據(jù) String info = new String(data, 0, packet.getLength()); System.out.println('我是服務器,客戶端說:' + info); /* * 向客戶端響應數(shù)據(jù) */ // 1.定義客戶端的地址、端口號、數(shù)據(jù) InetAddress address = packet.getAddress(); int port = packet.getPort(); byte[] data2 = '歡迎您!'.getBytes(); // 2.創(chuàng)建數(shù)據(jù)報,包含響應的數(shù)據(jù)信息 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 { /* * 向服務器端發(fā)送數(shù)據(jù) */ // 1.定義服務器的地址、端口號、數(shù)據(jù) InetAddress address = InetAddress.getByName('localhost'); int port = 8800; byte[] data = '用戶名:admin;密碼:123'.getBytes(); // 2.創(chuàng)建數(shù)據(jù)報,包含發(fā)送的數(shù)據(jù)信息 DatagramPacket packet = new DatagramPacket(data, data.length, address, port); // 3.創(chuàng)建DatagramSocket對象 DatagramSocket socket = new DatagramSocket(); // 4.向服務器端發(fā)送數(shù)據(jù)報 socket.send(packet); /* * 接收服務器端響應的數(shù)據(jù) */ // 1.創(chuàng)建數(shù)據(jù)報,用于接收服務器端響應的數(shù)據(jù) byte[] data2 = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(data2, data2.length); // 2.接收服務器響應的數(shù)據(jù) socket.receive(packet2); // 3.讀取數(shù)據(jù) String reply = new String(data2, 0, packet2.getLength()); System.out.println('我是客戶端,服務器說:' + reply); // 4.關閉資源 socket.close(); }}

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

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

標簽: Java
相關文章:
主站蜘蛛池模板: 国产农村妇女精品一区 | 在线免费观看毛片 | 欧美在线观看一区 | 国产99视频精品免费播放照片 | 国产精品99久久久久久www | 美女福利视频一区 | 在线视频一区二区三区 | 亚洲精品电影网在线观看 | 日日摸天天添天天添破 | 殴美成人在线视频 | 午夜理伦三级理论三级在线观看 | 国产成人精品一区二三区在线观看 | 天天插天天操 | 台湾a级理论片在线观看 | 欧美精品一区二区在线观看 | 日韩激情网 | 亚洲三级在线观看 | 成人亚洲精品 | 欧美视频一级 | 久久不卡 | 久久精品国产一区二区电影 | 午夜一区二区三区在线观看 | 久久亚洲一区二区三区四区 | 精品www| 极品粉嫩国产48尤物在线播放 | 影音先锋久久 | 九七午夜剧场福利写真 | 欧美精品一区二区三区蜜桃视频 | 99精品国自产在线观看 | 在线观看国产精品视频 | 日韩亚洲视频 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 成人a视频片观看免费 | 岛国av在线免费观看 | av中文字幕在线观看 | 欧美日韩免费在线 | 久久最新精品视频 | 亚洲欧美中文字幕在线观看 | 国产一区二区视频在线观看 | 99久久精品国产一区二区三区 | 色婷婷综合久久久久中文一区二区 |