https://github.com/adrian-lin-1-0-0/go-message-tcp
Set payload length ( Variable-Length Integer Encoding ) in pseudo-header to collect full message
https://github.com/adrian-lin-1-0-0/go-message-tcp
go golang tcp
Last synced: 3 months ago
JSON representation
Set payload length ( Variable-Length Integer Encoding ) in pseudo-header to collect full message
- Host: GitHub
- URL: https://github.com/adrian-lin-1-0-0/go-message-tcp
- Owner: adrian-lin-1-0-0
- License: mit
- Created: 2022-07-24T04:25:43.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-07T12:01:46.000Z (almost 2 years ago)
- Last Synced: 2025-01-25T18:43:41.331Z (4 months ago)
- Topics: go, golang, tcp
- Language: Go
- Homepage:
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Message Tcp
Set payload length ( Variable-Length Integer Encoding ) in pseudo-header to collect full message
#### Variable-Length Integer Encoding ( rfc9000 )
https://github.com/adrian-lin-1-0-0/go-variable-length-integer-encoding
#### Checksum (Optional)
- 1's Complement
## Install
```
go get github.com/adrian-lin-1-0-0/go-message-tcp@latest```
## Usage
Client
```go
package mainimport (
"log"tcp "github.com/adrian-lin-1-0-0/go-message-tcp"
)func main() {
address := ":5000"
conn, err := tcp.Dial(address)
if err != nil {
log.Fatalln(err)
}
defer conn.Close()conn.SetBufLen(2048) //default 1024
conn.SetChecksum(true) //default falseconn.Write([]byte("hello server"))
buf, err := conn.Read()
if err != nil {
log.Fatalln(err)
}log.Println("receive data : ", string(buf))
}
```Server
```go
package mainimport (
"log"tcp "github.com/adrian-lin-1-0-0/go-message-tcp"
)func main() {
address := ":5000"
li, err := tcp.Listen(address)
log.Println("server listen on ", address)
if err != nil {
log.Fatalln(err)
}
defer li.Close()li.SetBufLen(2048) //default 1024
li.SetChecksum(true) // default falsefor {
conn, err := li.Accept()
if err != nil {
log.Println(err)
continue
}
go handle(conn)
}
}func handle(conn tcp.Conn) {
for {
buf, err := conn.Read()
if err != nil {
log.Println(err)
break
}
log.Println("receive data : ", string(buf))
_, err = conn.Write([]byte("hi client"))
if err != nil {
log.Println(err)
break
}
}defer conn.Close()
log.Println("Connection close")
}
```