這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang代碼伺服器:
package mainimport ( //"io" "log" "net" "time" "fmt" "runtime")func main() { runtime.GOMAXPROCS(4)//設定cpu個數 // Listen on TCP port 2000 on all interfaces. l, err := net.Listen("tcp", ":2000") if err != nil { log.Fatal(err) } defer l.Close() for { conn, err := l.Accept() if err != nil { log.Fatal(err) } // Handle the connection in a new goroutine. // The loop then returns to accepting, so that // multiple connections may be served concurrently. go func(c net.Conn) { defer c.Close() var buf = make([]byte, 512) for { cnt, err := c.Read(buf) if err != nil { fmt.Printf("recv failed : %s", err) return } //fmt.Println(string(buf[:cnt])) time.Sleep(10) _, err = c.Write(buf[:cnt]) if err != nil { fmt.Printf("write failed : %s", err) return } } }(conn) }}
用戶端python代碼:
import threadingimport sysimport timeimport socket, sysimport selectdef echo(): host = "172.16.2.18" textport = 2000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: port = int(textport) except ValueError: port = socket.getservbyname(textport, 'tcp') s.connect((host, port)) while 1: select.select([],[],[],0.1) data = time.ctime() data.join("\r\n") s.sendall(data) #print "Looking for replies; press Ctrl-C or Ctrl-Break to stop." buf = s.recv(2048) if __name__ == "__main__": threads = [] for i in xrange(3000): os = threading.Thread(None,echo) os.start() threads.append(os) for x in threads: x.join()