https://github.com/screw-coding/screw-tiny-tcp-server
go tcp server with custom packet
https://github.com/screw-coding/screw-tiny-tcp-server
go packet tcp tcp-client tcp-server
Last synced: 28 days ago
JSON representation
go tcp server with custom packet
- Host: GitHub
- URL: https://github.com/screw-coding/screw-tiny-tcp-server
- Owner: screw-coding
- Created: 2022-06-27T10:05:42.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-06-27T10:06:02.000Z (about 4 years ago)
- Last Synced: 2025-03-03T08:45:00.472Z (over 1 year ago)
- Topics: go, packet, tcp, tcp-client, tcp-server
- Language: Go
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# screw-tiny-tcp-server
go实现最简单的tcp客户端和服务端,实现带自定义包结构的tcp客户读和服务端
## 目录结构
```
├── go.mod
├── pack_client_server
│ ├── pack_client.go 带构建包和解析包的客户端
│ ├── pack_server.go 带构建包和解析包的服务端
│ └── protocol.go
├── README.md
└── toy_client_server
├── toy_client.go 最简单的TCP客户端
└── toy_server.go 最简单的TCP服务端
```
## 说明
因为TCP是流式传输,可能出现客户端发送的内容,分成多段流到达服务端,如果服务端总是认为每次都是客户端一次发送的完整的内容,就会出现内容不完整的问题,因此需要在服务端处理检测内容是否完整的问题
也就是面试中常出现的:*TCP"粘包"问题如何处理?*
我个人看法是TCP协议不存在"粘包"问题,应用层才有"粘包"问题,不过这本来就是要开发者自己处理的
toy_client.go运行后,在toy_server.go上可以看到,不一定是一个一个收的,日志里会显示不定长的消息在一起
而在pack_server中,每次都是一个完整的信息