https://github.com/eproxus/framing
Framing provides a prefix length framed net.Conn connection.
https://github.com/eproxus/framing
Last synced: 11 months ago
JSON representation
Framing provides a prefix length framed net.Conn connection.
- Host: GitHub
- URL: https://github.com/eproxus/framing
- Owner: eproxus
- License: unlicense
- Created: 2015-08-13T14:07:23.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2015-09-24T15:44:36.000Z (over 10 years ago)
- Last Synced: 2025-07-09T07:03:39.701Z (11 months ago)
- Language: Go
- Size: 168 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.org/eproxus/framing)
[](https://coveralls.io/github/eproxus/framing?branch=master)
[](https://godoc.org/github.com/eproxus/framing)

# framing
Framing provides a prefix length framed net.Conn connection. This is useful if
you have connections that send packages that are prefixed with 1, 2 or 4 bytes
of message length before the actual data.
## Example
```go
package main
import (
"encoding/binary"
"fmt"
"log"
"net"
"strconv"
"github.com/eproxus/framing"
)
const prefixLength = 4
var endianess = binary.BigEndian
func main() {
message := "13 bytes long"
l, err := net.Listen("tcp", ":0") // Listen on localhost, random port
if err != nil {
log.Fatal(err)
}
defer l.Close()
port := l.Addr().(*net.TCPAddr).Port
// Send message in a go routine
go func() {
conn, err := net.Dial("tcp", ":"+strconv.Itoa(port))
if err != nil {
log.Fatal(err)
}
framed, err := framing.NewConn(conn, prefixLength, endianess)
if err != nil {
log.Fatal(err)
}
defer framed.Close()
if _, err := fmt.Fprintf(framed, message); err != nil {
log.Fatal(err)
}
}()
conn, err := l.Accept()
if err != nil {
log.Fatal(err)
}
framed, err := framing.NewConn(conn, prefixLength, endianess)
if err != nil {
log.Fatal(err)
}
defer framed.Close()
// Receive message
frame, err := framed.ReadFrame()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Recieved \"%v\"\n", string(frame[:13]))
}
```