Skip to content

Instantly share code, notes, and snippets.

@xjdrew
Created June 10, 2014 04:16
Show Gist options
  • Save xjdrew/ad4afb1604a3f149a19b to your computer and use it in GitHub Desktop.
Save xjdrew/ad4afb1604a3f149a19b to your computer and use it in GitHub Desktop.
go并发连接读
package main
import "net"
import "fmt"
import "sync"
import "os"
var wg sync.WaitGroup
var addr *net.TCPAddr
func worker(i int) {
defer wg.Done()
conn, err := net.DialTCP("tcp", nil, addr)
if err != nil {
fmt.Println("2:%v", err)
os.Exit(1)
}
for {
buf := make([]byte, 255)
n, err := conn.Read(buf)
fmt.Printf("(%d) ------------:%d\n",i, n)
if err != nil {
fmt.Printf("(%d) 3:%v\n", i, err)
os.Exit(1)
}
}
}
func launch(n int) {
for i:=0;i<n;i++ {
wg.Add(1)
go worker(i)
}
}
func main() {
var err error
addr, err = net.ResolveTCPAddr("tcp", "127.0.0.1:80")
if err != nil {
fmt.Println("1:%v", err)
os.Exit(1)
}
launch(10000)
wg.Wait()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment