python TCP多客户端连接

Posted yfw-crayy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python TCP多客户端连接相关的知识,希望对你有一定的参考价值。

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工具做客户端连接测试:


技术图片

断开连接:

技术图片


以上是关于python TCP多客户端连接的主要内容,如果未能解决你的问题,请参考以下文章

c# socket多连接(如何达到10万个客户端)

Python-TCP服务端程序开发

一个TCP端口最多可以同时连接多少个客户端

TCP服务器如何使用select处理多客户连接

一个TCP端口最多可以同时连接多少个客户端呢?

网络通信中tcp多客户端连接