Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "net"
- import "fmt"
- import "time"
- type Pair struct {
- a int
- b error
- }
- func send_data(n int, target string, content string, result chan Pair) {
- conn, err := net.DialTimeout("tcp", target, time.Duration(1 * time.Second))
- if err != nil {
- result <- Pair{n, err}
- return
- }
- defer conn.Close()
- _, err = conn.Write([]byte(content))
- if err != nil {
- result <- Pair{n, err}
- return
- }
- reply := make([]byte, 1024)
- conn.SetDeadline(time.Now().Add(1e9))
- _, err = conn.Read(reply)
- if err != nil {
- result <- Pair{n, err}
- return
- }
- result <- Pair{n, nil}
- return
- }
- func main() {
- targets := [...]string{"127.0.0.1:7777", "127.0.0.1:8888"}
- result := make(chan Pair)
- for i, target := range targets {
- go send_data(i, target, "hello\n", result)
- }
- for i := 0; i < len(targets); i++ {
- r := <-result
- if r.b != nil {
- fmt.Printf("%d %s\n", r.a, r.b.Error())
- } else {
- fmt.Printf("%d OK\n", r.a)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement