我使用python的threding模块创建了一个简单的多线程tcp服务器。每次连接新客户端时,该服务器都会创建一个新线程。

#!/usr/bin/env python

import socket, threading

class ClientThread(threading.Thread):

def __init__(self,ip,port):

threading.Thread.__init__(self)

self.ip = ip

self.port = port

print "[+] New thread started for "+ip+":"+str(port)

def run(self):

print "Connection from : "+ip+":"+str(port)

clientsock.send("\nWelcome to the server\n\n")

data = "dummydata"

while len(data):

data = clientsock.recv(2048)

print "Client sent : "+data

clientsock.send("You sent me : "+data)

print "Client disconnected..."

host = "0.0.0.0"

port = 9999

tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

tcpsock.bind((host,port))

threads = []

while True:

tcpsock.listen(4)

print "\nListening for incoming connections..."

(clientsock, (ip, port)) = tcpsock.accept()

newthread = ClientThread(ip, port)

newthread.start()

threads.append(newthread)

for t in threads:

t.join()

然后,我打开了两个新的终端,并使用netcat连接到服务器。然后,当我使用连接的第一个终端输入并向服务器发送第一个数据时,来自服务器的答复将传到另一个终端,并且第一个连接断开。我猜到了原因,但我怀疑是否会发生这种情况,因为

clientsock 变量被覆盖,因此它指向第二个连接的套接字。我是正确的,然后如何避免这种情况?

除了使用套接字变量数量有限的数组并为每个连接使用每个变量之外,还有其他方法吗?

python tcp服务器 多线程_Python中的多线程TCP服务器相关推荐

  1. python线程卡死问题解决_Python中的多线程:最后一个线程卡住了

    我遇到了一个奇怪的情况,在经历了很多次试射后我还是搞不清楚.我使用多线程(10)来读取url(100),它在大多数情况下都能正常工作,但在某些情况下,它会在最后一个线程上卡住.我等待它看它是否返回,花 ...

  2. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  3. python多线程实现方式_python中实现多线程有几种方式?

    我们都知道,代码编程不是固定的东西,而是非常灵活的内容,根据不同的内容,我们可以拓展出很多条内容,最终目的还是为了可以实现结果,给大家举例说明其中一个最常用的多线程吧~以及实现的几种方式. 1. 用函 ...

  4. python中线程里面多线程_Python中的线程和多线程是什么

    一.线程的概念 一个进程里面至少有一个控制线程,进程的概念只是一种抽象的概念,真正在CPU上面调度的是进程里面的线程,就好比真正在地铁这个进程里面工作的实际上是地铁里面的线程,北京地铁里面至少要有一个 ...

  5. python多线程没用_Python中的多线程cv2.imshow()不起作用

    我有两个摄像头(使用OpenNI,每个摄像头有两个流,由相同的驱动程序API实例处理),并且想要两个线程,每个线程捕获数据从每个摄像机独立,即驱动程序API的一个实例,说cam_handler,我有两 ...

  6. python计算密集型任务_Python多进程和多线程测试比高低,只为证明谁是最快的“仔”

    目的 前面分别详细介绍了python的多进程和多线程,如果还没看前面文章的,请先看下之前的文章详解内容.有任何疑问请留言.那这里就不再对多线程和多进程的实现和用法再赘述了.那各位同学学习了python ...

  7. python并发与并行_python多进程,多线程分别是并行还是并发

    匿名用户 1级 2017-09-30 回答 展开全部 并发和并行 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行. 你吃饭吃到一半,电话来了,你停了下来接了电话, ...

  8. python多程优化_Python 基本功: 13. 多线程运算提速

    小编在前两天开通了一个 Python 金融的专栏,顺便用 TuShare 下载了几只 A股的数据,有兴趣的小伙伴可以去看一下: 多多教Python:Python 金融: TuShare API 获取股 ...

  9. python 协程 多线程_python进阶之多线程(简单介绍协程)

    多线程 线程:实现多任务的另一种方式 一个进程中,也经常需要同时做多件事,就需要同时运行多个'子任务',这些子任务,就是线程 线程又被称为轻量级进程(lightweight process),是更小的 ...

最新文章

  1. 聊天机器人革命即将到来 开发者入局需谨慎
  2. 关于Mybatis查询结果的封装
  3. 设计模式 — 行为型模式 — 责任链模式
  4. Python词云 wordcloud 十五分钟入门与进阶
  5. [OS复习]进程管理3
  6. 【面试题】Ajax的原理和优缺点总结
  7. ML in Action 决策树
  8. 2021牛客暑期多校训练营7 xay loves trees dfs序 + 主席树
  9. C# 使用TcpClient 测试网络连接是否正常
  10. 在LINUX下安装 Sybase ASE 11.0.3.3
  11. CTS(2)---CTS、CTS-V、GTS版本更新,及其注意事项
  12. floor mod sqlserver_ORACLE和SQLServer-SQL语句的区别
  13. python习题_新手练习:Python练习题目
  14. 跨域小结(为什么form表单提交没有跨域问题,但ajax提交有跨域问题)
  15. 增值税相关软件基本常识
  16. HTML页面布局适配不同分辨率
  17. 简图-一款聚合图床源码
  18. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)
  19. 7月20HashMap、集合、HashSet
  20. css网页布局小练习,文字案例,小米官网卡片案例

热门文章

  1. cad文本改宋体字型lisp_CAD绘图员必须掌握的15个高能技巧,别人3天工作量你半天搞定!...
  2. 每日一皮:死循环的深刻理解...
  3. 接到一个需求,想在页面上加一个链接有多难?
  4. 牛逼的人没有不看书的(送书福利)
  5. java bean命名规范_JavaBean 成员命名规范 | 学步园
  6. mysql更新后返回主键,我需要在MYSQL中更新表后返回的受影响行的主键。
  7. Linux入门和运维
  8. pytorch CUDA out of memor
  9. pytorch计算模型参数量
  10. Tensorflow安装后,import时出现错误:ImportError: DLL load failed: 找不到指定的模块