日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Java模擬UDP通信示例代碼

瀏覽:17日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产高清| 久久国内精品| 91精品福利观看| 在线天堂中文资源最新版| 国产精品久久久久久久免费软件| 久久国产精品免费精品3p| 久久av电影| 日韩中文在线电影| 欧美三区不卡| 亚洲国产不卡| 精品91福利视频| 日韩av三区| 国产另类在线| 亚洲精品一二| 亚洲综合不卡| 一区二区三区四区日韩| zzzwww在线看片免费| 91精品国产一区二区在线观看 | 日韩伦理福利| 国产精品美女午夜爽爽| 一区二区亚洲精品| 快播电影网址老女人久久| 国产精品99精品一区二区三区∴ | 国产精品1区在线| 午夜欧美视频| 婷婷综合激情| 欧美在线亚洲综合一区| 亚洲天堂1区| 久久久一二三| 亚洲深夜福利| 蜜桃av一区| 日韩激情一二三区| 中文字幕亚洲在线观看| 亚洲免费专区| 国产探花一区二区| av资源中文在线| 久久久久一区| 日韩电影免费网站| 亚洲香蕉网站| 亚洲乱码一区| а√在线中文在线新版| 精品欧美激情在线观看| 欧美特黄视频| 国产美女精品视频免费播放软件| 日韩av中文字幕一区二区| 欧美日韩亚洲一区三区| 电影亚洲精品噜噜在线观看| 国产一区二区精品久| 亚洲国产日韩欧美在线| 日韩精品中文字幕吗一区二区| 麻豆久久一区二区| 亚洲一区成人| 欧美国产日本| 国产亚洲字幕| 午夜久久免费观看| 日韩国产在线不卡视频| 不卡一二三区| 国产精品毛片| 国产成人1区| 欧美中文高清| 日韩一级欧洲| 黄色在线网站噜噜噜| 1024精品久久久久久久久| 国产一区二区色噜噜| 亚洲丝袜美腿一区| 免费污视频在线一区| 欧美激情三区| 日本美女一区| 日韩精品国产欧美| 只有精品亚洲| 麻豆久久精品| 亚洲一区亚洲| 亚洲第一区色| 日韩不卡免费高清视频| 日韩精品成人| 亚洲精品黄色| 爽好多水快深点欧美视频| 视频在线不卡免费观看| 欧美日韩中出| 国产精品chinese| 国产一区 二区| 婷婷综合五月| 色爱av综合网| 久久精品青草| 亚洲91久久| 日韩在线看片| av免费不卡国产观看| 中文字幕在线看片| 国语精品一区| 精品亚洲美女网站| 精品欧美久久| 1024精品一区二区三区| 国产欧美在线观看免费| 亚洲少妇在线| 老司机久久99久久精品播放免费| 欧美日韩在线网站| 免费观看亚洲| 欧美成人综合| 日韩精品免费一区二区夜夜嗨 | 欧美亚洲一区二区三区| 丝袜亚洲精品中文字幕一区| 亚洲色图网站| 国产一区精品福利| 视频一区中文字幕| 国内精品美女在线观看| 人人草在线视频| 亚洲一级淫片| 国产美女视频一区二区| 国产日韩电影| 中文字幕免费一区二区| 精品国产网站| 99tv成人| 日韩精品久久理论片| 超级白嫩亚洲国产第一| 天堂精品久久久久| 九九色在线视频| 亚洲1区在线| 三上悠亚国产精品一区二区三区| 日韩在线综合| 欧美伊人影院| 久久久成人网| 国产精品尤物| 久久av在线| 国内激情久久| 超级白嫩亚洲国产第一| 国产精品男女| 日韩国产高清在线| 亚洲一区亚洲| 极品日韩av| 日本欧美不卡| 精品久久久久久久| 欧美欧美黄在线二区| 老鸭窝毛片一区二区三区| 福利视频一区| 精品中文字幕一区二区三区| 狠狠久久婷婷| 欧美日韩色图| 国精品产品一区| 你懂的国产精品永久在线| 婷婷亚洲成人| 免费不卡在线视频| 久久国产中文字幕| 日韩精品不卡一区二区| 成人一区不卡| 精品一区二区三区免费看| 亚洲三级毛片| 日韩欧美2区| 88久久精品| 国产高清日韩| 欧美aa在线视频| 国产日韩三级| 国产一区三区在线播放| 91亚洲国产| 日韩国产在线| 亚洲精品一二三区区别| 视频一区二区三区入口| 国产精品啊啊啊| 久久伊人亚洲| 99久久激情| 亚洲精品乱码日韩| 欧美日本精品| 老鸭窝一区二区久久精品| 成人精品视频| 悠悠资源网久久精品| 伊人国产精品| 亚洲综合专区| 久久99精品久久久久久园产越南 | 日韩毛片一区| 高清日韩中文字幕| 久久久五月天| 日韩中出av| 91亚洲国产| 日韩精品视频一区二区三区| 99久久99视频只有精品| 国产日韩精品视频一区二区三区| 欧美aa一级| 日韩av影院| 99精品视频在线| 国产精品伦一区二区| 亚洲一区激情| 久久国产成人午夜av影院宅| 国产精品一区二区三区美女| 成人三级高清视频在线看| 婷婷综合福利| 亚洲欧美视频| 久久精品卡一| 日韩福利在线观看| 亚洲另类视频| 久久成人精品| 久久大逼视频| 中文字幕人成乱码在线观看 | 亚洲人成高清| 久久亚洲国产| 国产精品一区二区中文字幕| 久久不卡日韩美女| 久久精品av麻豆的观看方式| 精品一区欧美| 精品视频一区二区三区在线观看 | 热久久国产精品| 精品一区二区三区四区五区|