前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python TCP多客户端连接

python TCP多客户端连接

作者头像
py3study
发布2020-01-15 16:39:09
2K0
发布2020-01-15 16:39:09
举报
文章被收录于专栏:python3python3

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

内网通截图20190601161350
内网通截图20190601161350

断开连接:

内网通截图20190601161541
内网通截图20190601161541
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档