Python TCP服务端代码: # coding=utf-8 # !/usr/bin/env python from socket import * from time import ctime import threading import time
HOST = '' #主机地址 PORT = 3046 #端口 BUFSIZ = 1024 #缓冲区大小 ADDR = (HOST, PORT) #地址及端口 tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建一个TCP套接字 tcpSerSock.bind(ADDR) #绑定地址及端口 tcpSerSock.listen(5) #最大client连接数为5 socks = [] # 放每个客户端的socket #创建一个遍历sock线程,接收数据 def handle(): while True: for s in socks: try: data = s.recv(BUFSIZ) # 到这里程序继续向下执行 except Exception, e: #无接收异常捕获 #print "接收异常!"; continue if not data: #无数据接收则移除该客户端引用 s.send('[%s],%s' % (ctime(), "")) #断开连接之前需要响应客户端,否则客户端无法再次建立连接 info=s.getpeername() print "客户端",info,"断开连接!" s.close() #断开该cilent连接
socks.remove(s) #从数组中移除该cilent连接引用 continue s.send('[%s],%s' % (ctime(), data)) #有数据接收则返回数据 print data; t = threading.Thread(target=handle) # 子线程 if __name__ == '__main__': t.start() #启动线程 print 'waiting for connecting...' while True: #循环监听连接 clientSock, addr = tcpSerSock.accept() #等待client连接 print 'connected from:', addr #打印客户端地址及其端口信息 clientSock.setblocking(0) #之后就是非阻塞的 socks.append(clientSock) #保存该客户端引用到socks数组
TCP工具做客户端连接测试:
断开连接: