最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信

 更新時(shí)間:2022年06月15日 12:11:53   作者:Orange#  
這篇文章主要為大家詳細(xì)介紹了java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java使用UDP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信的具體代碼,供大家參考,具體內(nèi)容如下

整體的結(jié)構(gòu)思路:

Stu和Tea是收發(fā)消息的兩端;

Stu和Tea類都是通過(guò)啟動(dòng)兩個(gè)線程完成通信的,這兩個(gè)線程分別是發(fā)消息線程和收消息線程;

Stu類中啟動(dòng)的兩個(gè)線程分別寫在兩個(gè)類里,Tea也是這樣做。

Stu端及其收發(fā)消息代碼:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
?
public class Stu {
?
?? ?public static void main(String[] args) throws IOException {
?? ??? ?new Thread(new StuSendThread("127.0.0.1", 8888)).start();
?? ??? ?new Thread(new StuReceiverThread(8889)).start();
?? ?}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
?
?
public class StuReceiverThread implements Runnable{
?
?? ?private int port;
?
?? ?public StuReceiverThread(int port) {
?? ??? ?this.port = port;
?? ?}
?? ?
?? ?@Override
?? ?public void run() {
?? ??? ?// 創(chuàng)建接收方
?? ??? ?DatagramSocket socket;
?? ??? ?try {
?? ??? ??? ?socket = new DatagramSocket(port);
?? ??? ??? ?while(true) {
?? ??? ??? ??? ?// 準(zhǔn)備容器
?? ??? ??? ??? ?byte[] buf = new byte[1024];
?? ??? ??? ??? ?DatagramPacket dPacket = new DatagramPacket(buf, buf.length);
?? ??? ??? ??? ?// 阻塞式接受數(shù)據(jù)
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?socket.receive(dPacket);
?? ??? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?// 分析數(shù)據(jù)
?? ??? ??? ??? ?System.out.println(new String(buf));
?? ??? ??? ??? ?if (new String(buf).equals("exit")) {
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?// 釋放資源
?? ??? ??? ?socket.close();
?? ??? ?} catch (SocketException e1) {
?? ??? ??? ?e1.printStackTrace();
?? ??? ?}?? ??? ?
?? ?}?? ?
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
?
public class StuSendThread implements Runnable{
?
?? ?private DatagramSocket socket;
?? ?private BufferedReader br;
?? ?String IP;
?? ?int port;
?? ?
?? ?public StuSendThread(String IP, int port) throws SocketException {
?? ??? ?socket = new DatagramSocket();
?? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ?this.IP = IP;
?? ??? ?this.port = port;
?? ?}
?? ?
?? ?@Override
?? ?public void run() {?? ??? ?
?? ??? ?while(true) {
?? ??? ??? ?// 準(zhǔn)備數(shù)據(jù)
?? ??? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ? ? ?String msg;
?? ??? ??? ?try {
?? ??? ??? ??? ?msg = br.readLine();
?? ??? ??? ??? ?byte[] data = msg.getBytes();
?? ??? ??? ??? ?// 封裝數(shù)據(jù)
?? ??? ??? ??? ?DatagramPacket dPacket = new DatagramPacket(data, data.length, InetAddress.getByName(IP), port);
?? ??? ??? ??? ?// 發(fā)送數(shù)據(jù)
?? ??? ??? ??? ?socket.send(dPacket);
?? ??? ??? ??? ?if(msg.equals("exit")) {
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?}
?? ??? ?
?? ??? ?// 關(guān)閉資源
?? ??? ?try {
?? ??? ??? ?br.close();
?? ??? ??? ?socket.close();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?
?? ?}
?
}

Tea端及其收發(fā)消息代碼:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
?
public class TeaSendThread implements Runnable{
?? ?private DatagramSocket socket;
?? ?private BufferedReader br;
?? ?String IP;
?? ?int port;
?
?? ?public TeaSendThread(String IP, int port) throws SocketException {
?? ??? ?socket = new DatagramSocket();
?? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ?this.IP = IP;
?? ??? ?this.port = port;
?? ?}
?
?? ?@Override
?? ?public void run() {
?? ??? ?while (true) {
?? ??? ??? ?// 準(zhǔn)備數(shù)據(jù)
?? ??? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ??? ?String msg;
?? ??? ??? ?try {
?? ??? ??? ??? ?msg = br.readLine();
?? ??? ??? ??? ?byte[] data = msg.getBytes();
?? ??? ??? ??? ?// 封裝數(shù)據(jù)
?? ??? ??? ??? ?DatagramPacket dPacket = new DatagramPacket(data, data.length, InetAddress.getByName(IP), port);
?? ??? ??? ??? ?// 發(fā)送數(shù)據(jù)
?? ??? ??? ??? ?socket.send(dPacket);
?? ??? ??? ??? ?if (msg.equals("exit")) {
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?
?? ??? ?}
?
?? ??? ?// 關(guān)閉資源
?? ??? ?try {
?? ??? ??? ?br.close();
?? ??? ??? ?socket.close();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?
?? ?}
?
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
?
public class TeaReceiverTread implements Runnable{
?? ?private int port;
?
?? ?public TeaReceiverTread(int port) {
?? ??? ?this.port = port;
?? ?}
?? ?
?? ?@Override
?? ?public void run() {
?? ??? ?// 創(chuàng)建接收方
?? ??? ?DatagramSocket socket;
?? ??? ?try {
?? ??? ??? ?socket = new DatagramSocket(port);
?? ??? ??? ?while(true) {
?? ??? ??? ??? ?// 準(zhǔn)備容器
?? ??? ??? ??? ?byte[] buf = new byte[1024];
?? ??? ??? ??? ?DatagramPacket dPacket = new DatagramPacket(buf, buf.length);
?? ??? ??? ??? ?// 阻塞式接受數(shù)據(jù)
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?socket.receive(dPacket);
?? ??? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?// 分析數(shù)據(jù)
?? ??? ??? ??? ?System.out.println(new String(buf));
?? ??? ??? ??? ?if (new String(buf).equals("exit")) {
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?// 釋放資源
?? ??? ??? ?socket.close();
?? ??? ?} catch (SocketException e1) {
?? ??? ??? ?e1.printStackTrace();
?? ??? ?}?? ??? ?
?? ?}?? ?
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
?
public class TeaSendThread implements Runnable{
?? ?private DatagramSocket socket;
?? ?private BufferedReader br;
?? ?String IP;
?? ?int port;
?
?? ?public TeaSendThread(String IP, int port) throws SocketException {
?? ??? ?socket = new DatagramSocket();
?? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ?this.IP = IP;
?? ??? ?this.port = port;
?? ?}
?
?? ?@Override
?? ?public void run() {
?? ??? ?while (true) {
?? ??? ??? ?// 準(zhǔn)備數(shù)據(jù)
?? ??? ??? ?br = new BufferedReader(new InputStreamReader(System.in));
?? ??? ??? ?String msg;
?? ??? ??? ?try {
?? ??? ??? ??? ?msg = br.readLine();
?? ??? ??? ??? ?byte[] data = msg.getBytes();
?? ??? ??? ??? ?// 封裝數(shù)據(jù)
?? ??? ??? ??? ?DatagramPacket dPacket = new DatagramPacket(data, data.length, InetAddress.getByName(IP), port);
?? ??? ??? ??? ?// 發(fā)送數(shù)據(jù)
?? ??? ??? ??? ?socket.send(dPacket);
?? ??? ??? ??? ?if (msg.equals("exit")) {
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?
?? ??? ?}
?
?? ??? ?// 關(guān)閉資源
?? ??? ?try {
?? ??? ??? ?br.close();
?? ??? ??? ?socket.close();
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?
?? ?}
?
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

福安市| 长宁县| 鄂尔多斯市| 霍林郭勒市| 丰原市| 集安市| 马龙县| 凉城县| 公安县| 汕头市| 镇江市| 横峰县| 禹城市| 登封市| 托里县| 博兴县| 彩票| 呼玛县| 宜丰县| 腾冲县| 安龙县| 积石山| 梨树县| 萍乡市| 武功县| 华蓥市| 台南市| 西和县| 新平| 天柱县| 汕头市| 嘉定区| 马边| 班玛县| 冕宁县| 兴国县| 吴桥县| 阿坝县| 舒城县| 庄浪县| 察雅县|