亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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類都是通過啟動(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)文章

  • mybatis-spring:@MapperScan注解的使用

    mybatis-spring:@MapperScan注解的使用

    這篇文章主要介紹了mybatis-spring:@MapperScan注解的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring中的@RestControllerAdvice注解使用解析

    Spring中的@RestControllerAdvice注解使用解析

    這篇文章主要介紹了Spring中的@RestControllerAdvice注解使用解析,@RestControllerAdvice?是?Spring?框架中一個(gè)用于統(tǒng)一處理控制器異常和返回結(jié)果的注解,它可以被用來定義全局異常處理程序和全局響應(yīng)結(jié)果處理程序,需要的朋友可以參考下
    2024-01-01
  • 繼承WebMvcConfigurationSupport后自動(dòng)配置不生效及如何配置攔截器

    繼承WebMvcConfigurationSupport后自動(dòng)配置不生效及如何配置攔截器

    這篇文章主要介紹了繼承WebMvcConfigurationSupport后自動(dòng)配置不生效及如何配置攔截器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • java實(shí)現(xiàn)圖片上傳至本地實(shí)例詳解

    java實(shí)現(xiàn)圖片上傳至本地實(shí)例詳解

    我們給大家分享了關(guān)于java實(shí)現(xiàn)圖片上傳至本地的實(shí)例以及相關(guān)代碼,有需要的朋友參考下。
    2018-08-08
  • Java使用EasyExcel進(jìn)行單元格合并的問題詳解

    Java使用EasyExcel進(jìn)行單元格合并的問題詳解

    項(xiàng)目中需要導(dǎo)出并合并指定的單元格,下面這篇文章主要給大家介紹了關(guān)于java評(píng)論、回復(fù)功能設(shè)計(jì)與實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 淺析Java如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常

    淺析Java如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常

    HTTP協(xié)議里定義了一系列的狀態(tài)碼用來表明請(qǐng)求的狀態(tài),如常用的200表示請(qǐng)求正常,404表示請(qǐng)求的資源不存在,所以本文就來和大家討論一下如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常,感興趣的可以了解下
    2024-03-03
  • springboot中使用@NotNull注解無效解決方法

    springboot中使用@NotNull注解無效解決方法

    這篇文章主要給大家介紹了關(guān)于springboot中使用@NotNull注解無效的解決方法,進(jìn)行參數(shù)校驗(yàn)的時(shí)候,加了@NotNull注解,@Validated注解和@Valid注解,但是參數(shù)校驗(yàn)的時(shí)候不生效,需要的朋友可以參考下
    2023-08-08
  • mybatis水平分表實(shí)現(xiàn)動(dòng)態(tài)表名的項(xiàng)目實(shí)例

    mybatis水平分表實(shí)現(xiàn)動(dòng)態(tài)表名的項(xiàng)目實(shí)例

    本文主要介紹了mybatis水平分表實(shí)現(xiàn)動(dòng)態(tài)表名的項(xiàng)目實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java構(gòu)造方法和方法重載詳解

    Java構(gòu)造方法和方法重載詳解

    大家好,本篇文章主要講的是Java構(gòu)造方法和方法重載詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Spring Boot監(jiān)聽Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例

    Spring Boot監(jiān)聽Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例

    這篇文章主要介紹了Spring Boot監(jiān)聽Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論