Advertisement
Guest User

send_hello

a guest
Feb 3rd, 2016
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.12 KB | None | 0 0
  1. package main
  2. import "net"
  3. import "fmt"
  4. import "time"
  5.  
  6. type Pair struct {
  7.     a int
  8.     b error
  9. }
  10.  
  11. func send_data(n int, target string, content string, result chan Pair) {
  12.     conn, err := net.DialTimeout("tcp", target, time.Duration(1 * time.Second))
  13.     if err != nil {
  14.         result <- Pair{n, err}
  15.         return
  16.     }
  17.     defer conn.Close()
  18.  
  19.     _, err = conn.Write([]byte(content))
  20.     if err != nil {
  21.         result <- Pair{n, err}
  22.         return
  23.     }
  24.  
  25.     reply := make([]byte, 1024)
  26.     conn.SetDeadline(time.Now().Add(1e9))
  27.     _, err = conn.Read(reply)
  28.     if err != nil {
  29.         result <- Pair{n, err}
  30.         return
  31.     }
  32.     result <- Pair{n, nil}
  33.     return
  34. }
  35.  
  36. func main() {
  37.     targets := [...]string{"127.0.0.1:7777", "127.0.0.1:8888"}
  38.     result := make(chan Pair)
  39.     for i, target := range targets {
  40.         go send_data(i, target, "hello\n", result)
  41.     }
  42.  
  43.     for i := 0; i < len(targets); i++ {
  44.         r := <-result
  45.         if r.b != nil {
  46.             fmt.Printf("%d %s\n", r.a, r.b.Error())
  47.         } else {
  48.             fmt.Printf("%d OK\n", r.a)
  49.         }
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement