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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux netty udp服务端,Netty实现UDP服务端

發(fā)布時(shí)間:2023/12/2 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux netty udp服务端,Netty实现UDP服务端 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

### 前言

在之前的文章我已經(jīng)講過(guò)了利用`Netty`實(shí)現(xiàn)`UDP`客戶端,大家有興趣的話,可以參看下面文章:

[Netty實(shí)現(xiàn)UDP客戶端](https://www.jianshu.com/p/5dbc6b3c9d94)

今天就讓我們來(lái)學(xué)習(xí)下利用`Netty`實(shí)現(xiàn)`UDP`服務(wù)端吧,這里我經(jīng)過(guò)整合封裝,主要涉及到兩個(gè)類:`UnServerHandler`和`UnServer`,下面就來(lái)講講它們的使用吧。

今天涉及內(nèi)容:

1. `netty` jar 包導(dǎo)入

2. `UnServerHandler`和`UnServer`簡(jiǎn)介

3. `UnServer`服務(wù)端在主函數(shù)中的使用

4. 需要注意的問(wèn)題

5. 效果圖和項(xiàng)目結(jié)構(gòu)圖

先來(lái)波效果圖

![效果圖.gif](/contentImages/image/20200612/MBRkLRd34CgjqsYIDV5.gif)

![客戶端日志.png](/contentImages/image/20200612/OMnaDqqHbDZ5IjM3HPP.png)

![服務(wù)端日志.png](/contentImages/image/20200612/KGZ5HgUSrB9tyEHidkG.png)

#### 一. netty jar 包導(dǎo)入

`UnServer`是利用`Netty`實(shí)現(xiàn)的`UDP服務(wù)端`,所以需要用到`netty` jar 包。我用的版本是`netty-all-5.0.0.Alpha2.jar`。首先我們要在你項(xiàng)目的 `項(xiàng)目/app/`下建`lib`文件夾,建成后路徑為:`項(xiàng)目/app/lib/`,然后將`netty-all-5.0.0.Alpha2.jar` 復(fù)制 到 `項(xiàng)目/app/lib/` 文件夾下。選中`netty-all-5.0.0.Alpha2.jar` 右鍵,選擇 `add As Library...`,然后打開(kāi)你`app_module`對(duì)應(yīng)的`build.gradle`,看到以下代碼:

```

implementation files('libs/netty-all-5.0.0.Alpha2.jar')

```

則表示你`jar包`導(dǎo)入成功。

`netty` jar 包你可以在`Netty`官網(wǎng)下,當(dāng)然這里我也提供下`netty-all-5.0.0.Alpha2.jar`下載地址:

[netty-all-5.0.0.Alpha2.jar下載](https://download.csdn.net/download/Burn_yourself/12507242)

#### 二. UnServerHandler 和 UnServer 簡(jiǎn)介

`UnServerHandler`是`UnServer`類的一個(gè)輔助類,主要是在`UnServer`中使用,大家只做了解,而真正要使用的類是`UnServer`服務(wù)端類。下面主要介紹下`UnServer`類中的一些常用方法:

```

/***

* 初始化對(duì)象,設(shè)置端口,字符集

*

* @param port 端口范圍:0-65535

* @param charsetName 字符編碼集:如 TcpConfig.UTF_8 或 TcpConfig.GBK

*/

public UnServer(int port,String charsetName)

/***

* 建立udp服務(wù)端

*

* @param listener 接收和返回?cái)?shù)據(jù)給udp客戶端的監(jiān)聽(tīng)

*/

public void start(UnServerHandler.OnChannelListener listener)

```

#### 三. UnServer 服務(wù)端在主函數(shù)中的使用

下面貼出`UnServer`服務(wù)端在主函數(shù)中使用的代碼:

```

/**

* Title:

* description:

* autor:pei

* created on 2020/3/6

*/

public class TestJava {

public static void main(String[] args) {

LogUtil.setDebug(true);

UnServer unServer=new UnServer(1112,"UTF-8");

unServer.start(new UnServerHandler.OnChannelListener() {

@Override

public String receiveData(ChannelHandlerContext ctx, String result) {

//接收客戶端數(shù)據(jù)

System.out.println("=========接收客戶端的數(shù)據(jù)=====result=" + result);

//給客戶端的回復(fù),若返回null,表示不給客戶端回復(fù)

return "我真的是服務(wù)端啊";

}

});

}

}

```

這里需要注意的是,若要對(duì)客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)做不同的處理,可以在接收的客戶端的數(shù)據(jù)上標(biāo)記不同`tag`,然后,根據(jù)不同`tag`,給客戶端回復(fù)不同的數(shù)據(jù),類似下面這樣:

```

unServer.start(new UnServerHandler.OnChannelListener() {

@Override

public String receiveData(ChannelHandlerContext ctx, String result) {

//接收客戶端數(shù)據(jù)

int type=Integer.valueOf(result.substring(0,1));

String message=result.substring(1,result.length());

System.out.println("===========我是接收結(jié)果=====result="+message);

//返回值為返回給客戶端的結(jié)果

String response = null;

switch (type) {

case 1:

response = "服務(wù)端已經(jīng)收到第一條數(shù)據(jù)";

break;

case 2:

response = "服務(wù)端已經(jīng)收到第二條數(shù)據(jù)";

break;

default:

break;

}

System.out.println("===========我是回復(fù)信息=====response="+response);

return response;

}

});

```

#### 四. 需要注意的問(wèn)題

主要問(wèn)題在于,若服務(wù)端接收數(shù)據(jù)亂碼,那么請(qǐng)保證客戶端與服務(wù)端使用相同的字符集。

#### 五. 效果圖和項(xiàng)目結(jié)構(gòu)圖

![效果圖.gif](/contentImages/image/20200612/MBRkLRd34CgjqsYIDV5.gif)

![客戶端日志.png](/contentImages/image/20200612/OMnaDqqHbDZ5IjM3HPP.png)

![服務(wù)端日志.png](/contentImages/image/20200612/KGZ5HgUSrB9tyEHidkG.png)

![項(xiàng)目結(jié)構(gòu)圖.png](/contentImages/image/20200612/R7Hgb9dlpJRj3IKK1kI.png)

ok,今天的內(nèi)容就介紹到這里了,謝謝大家。

總結(jié)

以上是生活随笔為你收集整理的linux netty udp服务端,Netty实现UDP服务端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。