# nettyx
**Repository Path**: fbbzl/nettyx
## Basic Information
- **Project Name**: nettyx
- **Description**: 对netty4.1.x 进行了超轻量级封装, 提供了tcp客户端/服务端的基础模板, 串口通信的基础模板, 以及业内通用的工具扩展集, 并提供了丰富的函数式接口
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://nettyx-fbbzl-card.netlify.app/
- **GVP Project**: No
## Statistics
- **Stars**: 20
- **Forks**: 7
- **Created**: 2021-12-22
- **Last Updated**: 2026-07-16
## Categories & Tags
**Categories**: web-dev-toolkits
**Tags**: Netty
## README
# Nettyx
馃殌 鍩轰簬 Netty 鐨勬瀬绠€寮€鍙戞鏋?/b>
杞婚噺 路 楂樻晥 路 寮€绠卞嵆鐢?鈥?鏀寔 TCP銆佷覆鍙c€佽摑鐗?/sub>
---
## 馃専 鐗规€?
| | 鐗规€?| 璇存槑 |
|---|------|------|
| 鈿?| **瓒呰交閲?* | Netty 4.2.x 瓒呰杽灏佽锛岄浂棰濆寮€閿€ |
| 馃攲 | **澶氬崗璁?* | TCP 路 涓插彛(Rxtx/Jsc) 路 钃濈墮 鈥?缁熶竴妯℃澘 API |
| 馃З | **缁撴瀯浣撳簭鍒楀寲** | 澹版槑寮忎簩杩涘埗鍗忚 鈥?娉ㄨВ鏍囨敞 POJO锛屼竴姝ュ埌浣?|
| 馃敡 | **鍑芥暟寮忎紭鍏?* | 鍑芥暟寮忓鐞嗗櫒銆佹嫤鎴櫒銆佸績璺?鈥?鍛婂埆鏍锋澘浠g爜 |
| 馃摗 | **钃濈墮灏辩华** | 鍩轰簬 OIO 鐨勮摑鐗欐湇鍔$/瀹㈡埛绔紝宓屽叆寮忚澶囧弸濂?|
---
## 馃摝 瀹夎
```xml
io.github.fbbzl
nettyx
2.6.27
```
```groovy
implementation 'io.github.fbbzl:nettyx:2.6.25'
```
---
## 馃Л 蹇€熷紑濮?
### TCP 鏈嶅姟绔?鈥?3 琛屼唬鐮?
```java
ServerTemplate server = new ServerTemplate(8080) {
@Override
protected ChannelInitializer childChannelInitializer() {
return ch -> ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ctx.writeAndFlush(Unpooled.wrappedBuffer("Hello\n".getBytes()));
}
});
}
};
server.bind();
```
### 缁撴瀯浣撳簭鍒楀寲 鈥?澹版槑寮忓崗璁畾涔?
```java
@Struct
public class Login {
@ToCharSequence(bufferLength = 32) String username;
@ToArray(10) byte[] password;
@Chunk(length = 8) byte[] reserved;
}
```
```java
Login login = StructSerializer.toStruct(buf, Login.class);
byte[] bytes = StructSerializer.toBytes(login);
```
### 涓插彛 鈥?RXTX
```java
SingleRxtxChannelTemplate serial = new SingleRxtxChannelTemplate("COM1") {
@Override
protected ChannelInitializer channelInitializer() {
return ch -> ch.pipeline().addLast(new StringCodec());
}
};
serial.connect();
serial.writeAndFlush("Hello");
```
### 钃濈墮鏈嶅姟绔?
```java
BtServerTemplate btServer = new BtServerTemplate("0000110100001000800000805f9b34fb", "MyBtServer") {
@Override
protected ChannelInitializer childChannelInitializer() {
return ch -> ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelActive(ChannelHandlerContext ctx) {
System.out.println("钃濈墮瀹㈡埛绔凡杩炴帴: " + ctx.channel().remoteAddress());
}
});
}
};
```
---
## 馃摎 妯″潡璇存槑
```
action 鍔熻兘鎺ュ彛 & 宸ュ叿绫?
channel Channel 鎵╁睍
鈹溾攢鈹€ bluetooth 钃濈墮 OIO锛堝鎴风/鏈嶅姟绔級
鈹溾攢鈹€ enhanced 浼樺寲鐨?OIO 瀛楄妭娴?
鈹斺攢鈹€ serial Rxtx / Jsc 涓插彛閫氶亾
codec 缂栬В鐮佸櫒
鈹溾攢鈹€ ByteArrayCodec 瀛楄妭鏁扮粍 鈫?ByteBuf
鈹溾攢鈹€ DelimiterBasedFrameCodec 鍩轰簬鍒嗛殧绗︾殑缂栬В鐮?
鈹溾攢鈹€ EscapeCodec 杞箟 / 鏁忔劅璇嶆浛鎹?
鈹溾攢鈹€ StartEndFlagFrameCodec 璧峰/缁撴潫鏍囧織缂栬В鐮?
鈹溾攢鈹€ StringMessageCodec 瀛楃涓茬紪瑙g爜
鈹斺攢鈹€ StructCodec 缁撴瀯浣撶紪瑙g爜
event Netty 浜嬩欢宸ュ叿
exception 鑷畾涔夎繍琛屾椂寮傚父
handler 绠¢亾澶勭悊鍣?
鈹溾攢鈹€ ChannelInterceptor 璇诲啓鎷︽埅鍣?
鈹溾攢鈹€ ActionIdleStateHandler 鍙弬鏁板寲绌洪棽鐘舵€佸鐞嗗櫒
鈹溾攢鈹€ ActionReadTimeoutHandler 鍙弬鏁板寲璇昏秴鏃跺鐞嗗櫒
鈹溾攢鈹€ ActionWriteTimeoutHandler 鍙弬鏁板寲鍐欒秴鏃跺鐞嗗櫒
鈹溾攢鈹€ ChannelAdvice 鍏ョ珯/鍑虹珯閫氱煡
鈹溾攢鈹€ IdledHeartBeater 鑷姩蹇冭烦
鈹斺攢鈹€ MessageFilter 娑堟伅杩囨护鍣?
serializer 搴忓垪鍖?
鈹斺攢鈹€ struct 浜岃繘鍒剁粨鏋勪綋搴忓垪鍖栵紙娉ㄨВ椹卞姩锛?
template 搴旂敤妯℃澘
鈹溾攢鈹€ serial/jsc Jsc 澶?鍗曢€氶亾瀹㈡埛绔?
鈹溾攢鈹€ serial/rxtx Rxtx 澶?鍗曢€氶亾瀹㈡埛绔?
鈹溾攢鈹€ tcp/client TCP 澶?鍗曢€氶亾瀹㈡埛绔?+ 鏈嶅姟鎺㈡祴
鈹溾攢鈹€ tcp/server TCP 鏈嶅姟绔?
鈹斺攢鈹€ bluetooth/server 钃濈墮鏈嶅姟绔?
util 宸ュ叿绫?
鈹溾攢鈹€ Bins 浜岃繘鍒朵綅/鏁扮粍宸ュ叿
鈹溾攢鈹€ BtFinder 钃濈墮璁惧鎵弿
鈹溾攢鈹€ CommPorts 涓插彛宸ュ叿
鈹溾攢鈹€ EndianKit 澶у皬绔浆鎹?
鈹溾攢鈹€ HexKit 鍗佸叚杩涘埗缂栬В鐮?
鈹斺攢鈹€ ...
```
---
## 馃И 鏋勫缓
```bash
mvn clean install -DskipTests
```
> 鈩癸笍 閮ㄥ垎娴嬭瘯渚濊禆纭欢锛堜覆鍙c€佽摑鐗欓€傞厤鍣級锛岃鎸夐渶杩愯銆?
---
## 馃敆 閾炬帴
| | |
|---|------|
| 馃寪 | [GitHub](https://github.com/fbbzl/nettyx) |
| 馃嚚馃嚦 | [Gitee](https://gitee.com/fbbzl/nettyx) |
| 馃摉 | [浣跨敤妗堜緥](https://blog.csdn.net/fbbwht) |
| 馃洜锔?| [JetBrains IDEA](https://www.jetbrains.com) 鈥?鎺堟潈璧炲姪 |
---
## 馃檹 楦h阿
> 棣栧厛璋㈣阿瀹朵汉锛岀粰浜嗘垜鍏呰冻鐨勬椂闂翠笓娉ㄥ湪姝ら」鐩笂锛涚劧鍚庢劅璋?JetBrains 璧犻€佺殑 Ultimate Edition 鐗?IDEA锛涙渶鍚庤阿璋㈣嚜宸便€?
>
> 甯屾湜姝ゆ鏋惰兘澶熶负澶у鑺傜渷鍝€曚竴鍒嗛挓鐨勫紑鍙戞椂闂淬€?