golang代码服务器:
package main import ( //"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 threading import sys import time import socket, sys import select def 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()
有疑问加站长微信联系(非本文作者)