日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java当中用UDP实现相互交流

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java当中用UDP实现相互交流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:引言

實現一方 到另一方可以發送信息,而另一方也能回復信息。這里用到了多線程,開辟兩條不同的執行路徑,一個執行接收信息,一個執行發送信息,但其端口號 要對應 ,即一個發送端口,對應一個接收端口。

二:上碼:

1:發送端類的實現

package com.wyj.three;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException;/*** 發送端* * @author 86155**/ public class Demo12_talk發送02 implements Runnable{private DatagramSocket client;private BufferedReader reader;private int port;private int toport;private String toIP;public Demo12_talk發送02(int port,int toport,String toIP) {this.port = port;this.toport = toport;this.toIP = toIP;try {client = new DatagramSocket(port);reader = new BufferedReader(new InputStreamReader(System.in));} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubwhile( true ) {String msg ;try {msg = reader.readLine();byte[] dates = msg.getBytes();// 3.封裝成 DatagramPacket 包裹 指定目的地 即Ip地址和端口DatagramPacket packet = new DatagramPacket(dates, 0,dates.length, new InetSocketAddress(this.toIP,this.toport));// 4.發送包裹 send(DatagramPacket p)client.send(packet);if(msg.equals("bye")) {break;}}catch( IOException e ) {e.printStackTrace();}}client.close();}}

2:接受端類的實現

package com.wyj.three;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;/*** 接收端* * * @author 86155**/ public class Demo11_talk接收端02 implements Runnable{DatagramSocket server;public Demo11_talk接收端02(int port) {try {server = new DatagramSocket(port);} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubwhile(true) {byte [] container = new byte[1024*60];DatagramPacket packet = new DatagramPacket(container,container.length); // 3.阻塞式接受包裹 receive?(DatagramPacket p)try {server.receive(packet);//會有延遲byte[] dates = packet.getData();int len = packet.getLength();//得用packet的實際大小 String date = new String(dates,0,len);System.out.println(date);if( date.equals("bye")) {break;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//釋放資源server.close();}}

3:具體的實現(老師與學生的交流)

package com.wyj.three; /*** 實現相互交流吧* * * @author 86155**/ public class Demo1_student {public static void main(String[] args) { new Thread(new Demo11_talk接收端02(9998)).start();//接受new Thread(new Demo12_talk發送02(5555, 9997, "localhost")).start();//發送} }

4:具體的實現(老師與學生的交流)

package com.wyj.three; /*** * 實現相互交流* * @author 86155**/ public class Demo2_teacher {public static void main(String[] args) {new Thread(new Demo12_talk發送02(8888, 9998, "localhost")).start();//發送new Thread(new Demo11_talk接收端02(9997)).start();//接受} }

不同的顏色代表接受端和發送端不相同(黑色代表接收端)

總結

以上是生活随笔為你收集整理的java当中用UDP实现相互交流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。