Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joseluisq/gonetc
A simple Go net wrapper client interface.
https://github.com/joseluisq/gonetc
go-net go-package golang ipc-socket net-client socket tcp
Last synced: 8 days ago
JSON representation
A simple Go net wrapper client interface.
- Host: GitHub
- URL: https://github.com/joseluisq/gonetc
- Owner: joseluisq
- License: apache-2.0
- Created: 2020-12-10T23:27:12.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-28T21:28:42.000Z (over 1 year ago)
- Last Synced: 2024-05-28T11:58:24.292Z (7 months ago)
- Topics: go-net, go-package, golang, ipc-socket, net-client, socket, tcp
- Language: Go
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# gonetc ![devel](https://github.com/joseluisq/gonetc/workflows/devel/badge.svg) [![codecov](https://codecov.io/gh/joseluisq/gonetc/branch/master/graph/badge.svg)](https://codecov.io/gh/joseluisq/gonetc) [![Go Report Card](https://goreportcard.com/badge/github.com/joseluisq/gonetc)](https://goreportcard.com/report/github.com/joseluisq/gonetc) [![PkgGoDev](https://pkg.go.dev/badge/github.com/joseluisq/gonetc)](https://pkg.go.dev/github.com/joseluisq/gonetc)
> A simple [Go Network](https://golang.org/pkg/net/) wrapper client interface.
## Usage
```go
package mainimport (
"log"
"strings""github.com/joseluisq/gonetc"
)func main() {
// Code example using IPC Unix Sockets// 1. Create a simple listening Unix socket with echo functionality
// using the `socat` tool -> http://www.dest-unreach.org/socat/
// Then execute the following commands on your terminal:
// rm -f /tmp/mysocket && socat UNIX-LISTEN:/tmp/mysocket,fork exec:'/bin/cat'// 2. Now just run this client code example in order to exchange data with current socket.
// go run examples/main.go// 2.1 Connect to the listening socket
sock := gonetc.New("unix", "/tmp/mysocket")
err := sock.Connect()
if err != nil {
log.Fatalln("unable to communicate with socket:", err)
}// 2.2 Send some sequential data to current socket (example only)
pangram := strings.Split("The quick brown fox jumps over the lazy dog", " ")
for _, word := range pangram {
log.Println("client data sent:", word)
_, err := sock.Write([]byte(word), func(resp []byte, err error, done func()) {
if err != nil {
log.Fatalln("unable to write data to socket", err)
}
log.Println("client data received:", string(resp))
// Finish the current write handling response if we are done
done()
})
if err != nil {
log.Fatalln("unable to write to socket:", err)
}
}sock.Close()
// 3. Finally after running the client you'll see a similar output like:
//
// 2020/12/11 00:32:27 client data sent: The
// 2020/12/11 00:32:27 client data received: The
// 2020/12/11 00:32:28 client data sent: quick
// 2020/12/11 00:32:28 client data received: quick
// 2020/12/11 00:32:29 client data sent: brown
// 2020/12/11 00:32:29 client data received: brown
// 2020/12/11 00:32:30 client data sent: fox
// 2020/12/11 00:32:30 client data received: fox
// 2020/12/11 00:32:31 client data sent: jumps
// 2020/12/11 00:32:31 client data received: jumps
// 2020/12/11 00:32:32 client data sent: over
// 2020/12/11 00:32:32 client data received: over
// 2020/12/11 00:32:33 client data sent: the
// 2020/12/11 00:32:33 client data received: the
// 2020/12/11 00:32:34 client data sent: lazy
// 2020/12/11 00:32:34 client data received: lazy
// 2020/12/11 00:32:35 client data sent: dog
// 2020/12/11 00:32:35 client data received: dog
}
```## Contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in current work by you, as defined in the Apache-2.0 license, shall be dual licensed as described below, without any additional terms or conditions.
Feel free to send some [Pull request](https://github.com/joseluisq/gonetc/pulls) or [issue](https://github.com/joseluisq/gonetc/issues).
## License
This work is primarily distributed under the terms of both the [MIT license](LICENSE-MIT) and the [Apache License (Version 2.0)](LICENSE-APACHE).
© 2020-present [Jose Quintana](https://git.io/joseluisq)