python实现简单的tcp通讯
服务端:
import socket import threading import time #创建socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #监听端口 s.bind(('192.168.1.7',9999)) s.listen(5) print 'Waiting for connection...' def tcplink(sock,addr): print 'Accept new connection from %s:%s...' % addr sock.send('Welcome!') while True: data=sock.recv(1024) if data=='exit' or not data: break print '%s:%s' % (addr[0],data) sock.send('Hello,%s!'%data) sock.close() print 'Connection from %s:%s closed.'%addr while True: #接受一个新连接 sock,addr=s.accept() #创建新线程来处理TCP连接 t=threading.Thread(target=tcplink,args=(sock,addr)) t.start()
特别注意:
在使用线程时,函数的调用以及参数传递必须使用
target=tcplink,args=(sock,addr)
如果使用
target=tcplink(sock,addr)
线程会出现阻塞的情况。
客户端
import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('192.168.1.7',9999)) print s.recv(1024) while True: data = raw_input('Please intput your mesage:') str_mesg = str(data) s.send(str_mesg) print s.recv(1024) s.send('exit') s.close()