成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Java模擬UDP通信示例代碼

瀏覽:2日期:2022-08-31 13:27:40

Java基礎:模擬UDP通信

1、一次發送,一次接收1.1、發送方

// 發送端,不需要連接服務器public class UdpClientDemo { public static void main(String[] args) throws Exception {// 1. 發送數據包需要一個SocketDatagramSocket socket = new DatagramSocket();// 1.2 建立一個包String msg = '你好';InetAddress localhost = InetAddress.getByName('localhost');System.out.println(localhost);int port = 8080;/*通過UDP發送消息,需要通過 包 來發送,--> DatagramPacket(),該方法有多種重載形式,以下使用參數列表最多的那個參數:- 要發送的 消息 的字節數組 - 從字節數組的哪個位置開始發送- 發送的長度- 對方的 IP地址- 對方的端口號 */DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);// 2. 發送數據包socket.send(packet);socket.close(); }}1.2、接收方

// 接收端,接收端需要保證存在,否則接收不到,所以需要提前開啟public class UdpServerDemo { public static void main(String[] args) throws Exception {// 1. 接收也需要一個Socket,并且要開啟接收的端口DatagramSocket socket = new DatagramSocket(8080);// 需要一個字節數組來接收數據byte[] buffer = new byte[1024];// 1.2 封裝數據包DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);// 2. 接收數據,阻塞式接收:一直處于監聽狀態socket.receive(packet);// 關閉套接字socket.close();// 輸出一下System.out.println(packet.getAddress().getHostAddress());// trim():為了去除多余的空格System.out.println(new String(packet.getData()).trim()); }}2、多次發送,多次接收

一方多次發送,一方多次接收,加上一個 while(true) {} 死循環,并規定在什么情況下退出即可。

2.1、發送方

public class ChatSenderDemo { public static void main(String[] args) throws Exception {// 使用Socket來接收DatagramSocket socket = new DatagramSocket();while (true) { // 準備發送包裹,從鍵盤接收數據 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 讀取一行 String data = reader.readLine(); byte[] dataBytes = data.getBytes(); DatagramPacket packet = new DatagramPacket(dataBytes, dataBytes.length, new InetSocketAddress('127.0.0.1', 6666)); // 發送 socket.send(packet); // 什么時候退出 if ('bye'.equals(data)) {break; }}// 關閉socket.close(); }}2.2、接收方

public class ChatReceiveDemo { public static void main(String[] args) throws Exception {DatagramSocket socket = new DatagramSocket(6666);while (true) { // 準備接收數據包裹 byte[] buffer = new byte[1024]; // 用來接收數據 DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length); // 接收包裹,阻塞時接收 socket.receive(packet); // 接收到的數據 String receiveData = new String(packet.getData()).trim(); // 打印到控制臺 System.out.println(receiveData); // 什么時候退出 if ('bye'.equals(receiveData)) {break; }}// 關閉socket.close(); }}3、模擬雙方通信

模擬雙方使用UDP通信,需要開啟兩個線程,并對以上代碼進行【共性提取】,進一步進行抽象。

由此,雙方可以通過指定的端口來互相發送消息。

3.1、發送方的線程

// 開啟多線程需要實現 Runnable 接口,實現 run()方法public class TalkSender implements Runnable { // 網絡套接字,發送需要 DatagramSocket socket = null; // 緩沖讀取流 BufferedReader reader = null; // 開啟哪個端口接收 private int fromPort; // 對方的 IP private String toIP; // 對方的端口 private int toPort; // 通過構造方法進行初始化 public TalkSender(int fromPort, String toIP, int toPort) {this.fromPort = fromPort;this.toIP = toIP;this.toPort = toPort;try { socket = new DatagramSocket(fromPort);} catch (SocketException e) { e.printStackTrace();} } // 重寫 run()方法,設置線程任務 @Override public void run() {while (true) { String data = null; try {// 準備發送包裹,從鍵盤接收數據reader = new BufferedReader(new InputStreamReader(System.in));// 讀取一行data = reader.readLine();byte[] dataBytes = data.getBytes();DatagramPacket packet = new DatagramPacket(dataBytes, dataBytes.length, new InetSocketAddress(toIP, toPort));socket.send(packet); } catch (IOException e) {e.printStackTrace(); } // 什么時候退出 if ('bye'.equals(data)) {break; }}// 關閉socket.close(); }}3.2、接收方的線程

public class TalkReveicer implements Runnable { DatagramSocket socket = null; // 從哪個端口接收 private int formPort; // 發送方是誰 private String who; public TalkReveicer(int formPort, String who) {this.formPort = formPort;this.who = who;try { socket = new DatagramSocket(formPort);} catch (SocketException e) { e.printStackTrace();} } @Override public void run() {while (true) { String receiveData = null; try {// 準備接收數據包裹byte[] buffer = new byte[1024];// 接收數據DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);// 接收數據,阻塞式socket.receive(packet);// 接收到的數據receiveData = new String(packet.getData());System.out.println(who + ':' + receiveData.trim()); } catch (IOException e) {e.printStackTrace(); } // 什么時候退出 if ('bye'.equals(receiveData)) {break; }}// 關閉socket.close(); }}3.3、模擬學生

// 學生端public class TalkStudent { public static void main(String[] args) {// 開啟 5555端口,發送到本機的 6666端口new Thread(new TalkSender(5555, 'localhost', 6666)).start();// 規定使用 7777 端口接收老師發送的消息new Thread(new TalkReveicer(7777, '老師')).start(); }}3.4、模擬老師

// 教師端public class TalkTeacher { public static void main(String[] args) {// 開啟 8888端口,發送到本機的 7777端口new Thread(new TalkSender(8888, 'localhost', 7777)).start();// 規定使用 6666 端口接收學生發送的消息new Thread(new TalkReveicer(6666, '學生')).start(); }}

總結:

使用UDP通信,其實主要的步驟分為三步:

1 用 DatagramSocket() 來開啟端口,通過開啟端口聊天。2 用DatagramPacket() 來發送或者接收數據。3 關閉 DatagramSocket,釋放資源。

以上就是Java模擬UDP通信示例代碼的詳細內容,更多關于Java模擬UDP通信的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
性欧美长视频| 亚洲欧美色一区| 裸体丰满少妇做受久久99精品| 日韩欧美自拍偷拍| 久久亚洲综合色一区二区三区| 最新中文字幕一区二区三区| av毛片久久久久**hd| 中文字幕久久午夜不卡| 亚洲欧美一区二区三区久本道91| 99re在线视频这里只有精品| 制服丝袜av成人在线看| 蜜桃91丨九色丨蝌蚪91桃色| 久热这里只精品99re8久| 亚洲最新视频在线观看| 亚洲人体一区| 中文字幕国产精品一区二区| jvid福利写真一区二区三区| 日韩一区二区在线观看视频播放| 精品亚洲成a人| 欧美日韩国产首页| 日本欧美在线观看| 色综合久久久久综合体桃花网| 亚洲图片欧美综合| 国产精品一区毛片| 亚洲午夜视频在线观看| 国产精品一区二区三区四区五区| 一区二区三区不卡视频| 99在线精品免费视频九九视| 一区二区三区av电影| 国产精品一国产精品k频道56| 亚洲欧美日韩综合aⅴ视频| 亚洲高清视频在线观看| 亚洲精选视频免费看| 亚洲一区综合| 天堂久久一区二区三区| 免费看的黄色欧美网站| 日韩精品三区四区| 欧美日精品一区视频| 美女久久久精品| 国产精品国产三级国产普通话蜜臀 | 国产麻豆91精品| 香蕉成人久久| 亚洲少妇最新在线视频| 国产欧美短视频| 日韩精品亚洲一区| 欧美日韩一区二区三区视频| 激情六月婷婷久久| 337p日本欧洲亚洲大胆色噜噜| gogogo免费视频观看亚洲一| 久久九九国产精品| 在线播放亚洲| 五月天久久比比资源色| 欧美在线你懂的| 国产九色精品成人porny| 欧美大片免费久久精品三p| 色综合网站在线| 亚洲日本电影在线| 午夜在线视频观看日韩17c| 日韩av一二三| 欧美一区二区三区视频免费播放 | 国产一区久久久| 精品裸体舞一区二区三区| 欧美精品v日韩精品v国产精品| 亚洲三级小视频| 狼狼综合久久久久综合网| 国产中文字幕精品| 久久精品无码一区二区三区| 亚洲高清资源综合久久精品| 五月婷婷综合激情| 91.com视频| 91蝌蚪porny成人天涯| 亚洲卡通欧美制服中文| 欧美日本久久| 成人午夜在线播放| 欧美大肚乱孕交hd孕妇| 成人av影视在线观看| 亚洲精品成人在线| 欧美三级日韩在线| 日韩午夜电影| 国产成人免费av在线| 亚洲综合一二区| 99久久国产免费看| 国产精品久久久久久久浪潮网站 | 校园激情久久| 国产美女久久久久| 中文一区在线播放| 色老汉一区二区三区| 粉嫩一区二区三区在线看| 亚洲天堂2016| 精品视频在线视频| 国色天香一区二区| 久久99精品久久久| 欧美经典三级视频一区二区三区| 亚洲欧美日韩国产一区| 国产高清精品网站| 一区二区三区成人| 91精品视频网| 亚洲无线视频| 精品一区二区久久久| 中文字幕一区二区三区在线播放| 欧美午夜在线一二页| 99精品国产热久久91蜜凸| 偷窥国产亚洲免费视频| 精品福利一区二区三区免费视频| 亚洲一区日韩在线| 91亚洲精品一区二区乱码| 亚洲成人手机在线| 久久美女高清视频| 久久先锋资源| 欧美在线三级| 老司机精品视频在线| 国产精品网曝门| 欧美久久婷婷综合色| 日韩视频一区二区三区在线播放免费观看| 国产一区二区三区四区五区入口| 亚洲精品成a人| 亚洲人成人一区二区在线观看| 久久久久久亚洲精品杨幂换脸| 欧美极品一区二区三区| 成人黄色一级视频| 国产成人av电影在线观看| 国产成人免费av在线| 欧美日韩大片一区二区三区| 久久av资源网| 久久久久国产精品一区三寸| 午夜视频久久久| 国产在线不卡一卡二卡三卡四卡| 亚洲丝袜精品丝袜在线| 91精品国产色综合久久不卡蜜臀| 亚洲在线国产日韩欧美| 91视频国产资源| 欧美巨大另类极品videosbest | 99国产精品久久久久久久久久久| 天天色天天操综合| 国产精品成人在线观看| 91精品国产综合久久香蕉麻豆| 午夜在线a亚洲v天堂网2018| 欧美jizzhd精品欧美喷水| 韩国女主播成人在线观看| 亚洲最新视频在线播放| 久久奇米777| 777色狠狠一区二区三区| 久久精品三级| 亚洲激情另类| 女女同性精品视频| 国产酒店精品激情| 日本女优在线视频一区二区| 亚洲色图一区二区三区| 欧美日韩精品一区二区| 欧美日韩国产美| 99热这里只有精品8| 一本一道综合狠狠老| 欧美三级电影在线看| 欧美精品在线一区二区| 亚洲欧洲制服丝袜| 粉嫩久久99精品久久久久久夜 | 国产婷婷色一区二区三区四区| 亚洲伊人网站| 亚洲国产精品视频一区| 欧美1级日本1级| 成人精品国产免费网站| 国产精品2024| 韩国女主播一区二区三区| 奇米在线7777在线精品| 亚洲r级在线视频| 久久精品日韩欧美| 亚洲精品一区二区三区蜜桃下载 | 欧美电影免费观看高清完整版在 | 日韩亚洲欧美高清| 日本精品一级二级| 亚洲一区bb| 亚洲久久成人| 国内不卡一区二区三区| 99久免费精品视频在线观看| 国产99一区视频免费| 国产精品资源在线| 国产激情视频一区二区在线观看 | 蜜臀精品久久久久久蜜臀| 香蕉成人啪国产精品视频综合网| 亚洲激情男女视频| 亚洲欧美另类在线| 国产精品久久久久久久久免费桃花 | 久久人人九九| 香蕉视频成人在线观看 | 日韩三级中文字幕| 日韩一区二区三区高清免费看看| 欧美日本视频在线| 91精品国产色综合久久不卡电影| 欧美一区二区在线播放| 日韩一级黄色大片| 欧美一二区视频| 欧美一区二区三区啪啪| 91精品黄色片免费大全| 在线播放视频一区| 91麻豆精品国产91久久久资源速度 | 夜夜嗨av一区二区三区四季av| 亚洲精品午夜久久久| 亚洲精品日韩专区silk| 一区二区不卡在线播放 | 国产亚洲欧洲一区高清在线观看|