1.使用setDaemon(True)代替join() 【全部替换】---不然子线程

2.在主线程

try:

while True:

time.sleep(1)

except KeyboardInterrupt:

# 使用文件内容来判断是否关闭tcpsocketserver连接

with open('文件路径','w') as f:

f.write('0')

print('main end')

3.tcpsocketserver

def __init__(self, request, client_address, server):

self.request = request

self.client_address = client_address

self.server = server

self.setup()

try:

self.handle()

finally:

self.finish()

def setup(self):

ip = self.client_address[0].strip() # 获取客户端的ip

port = self.client_address[1] # 获取客户端的port

print('ServerTCPForDev %s:%d is connected!' % (ip, port))

def handle(self):

while True:

with open('文件路径','r') as f:

if int(f.read()) == 1:

print('client tcp ',self.client_address, ' 工作正常')

# 给recv设置一个时间,如果超过了这个时间,就执行这个判断方法

data = self.request.recv(1024)

print('recv from client is %s' % data.decode())

else:

print('server',self.server, ' 即将断开连接' )

self.server.shutdown() # 关闭服务端连接

self.request.close() # 关闭客户端连接

break

def finish(self):

ip = self.client_address[0].strip() # 获取客户端的ip

port = self.client_address[1] # 获取客户端的port

print("tcp client(%s:%d) is disconnect!" % (ip, port))

客户端代码

import socket

import time

from threading import Thread

port = 10501

class ClientThread(Thread):

def __init__(self):

super(ClientThread, self).__init__()

def run(self):

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

s.connect((host, port))

try:

while True:

s.sendall('nihao'.encode('utf-8'))

time.sleep(3)

except:

s.close()

for i in range(4):

a = ClientThread()

a.start()

作者:To be a cool guy

来源:CSDN

原文:https://blog.csdn.net/qq_32446743/article/details/80309836

版权声明:本文为博主原创文章,转载请附上博文链接!

2019-01-28,我用py开发的服务端,遇到tcpserver线程无法结束的问题,困扰了我好久,适逢公司搬迁,还有一些巧的无关的事项前来打扰。一拖3天多没有能解决这个问题。

今日早上,突然看到这篇,解我难题,在此感谢原博主

python socket 主动断开_python之使用ctrl+c断开多线程(TcpSocketServer连接)出现端口占用的情况...相关推荐

  1. python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案

    python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接.问题解决方案: 前几天使用python读取网页.因为对一个网站大量的使用urlopen操作,所以 ...

  2. python socket 主动断开_Python网络编程tcp详解(基础篇十四)

    网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...

  3. python socket connect 阻塞_python 网络编程(socketserver,阻塞,其他方法)

    重点回顾: (重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题 只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输 粘包的发生主要是因为tcp协议有两个机制: ...

  4. python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  5. python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)-阿里云开发者社区...

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  6. python socket tcp客户端_python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  7. python socket server库_python基础之socket与socketserver

    ---引入 Socket的英文原义是"孔"或"插座",在Unix的进程通信机制中又称为'套接字'.套接字实际上并不复杂,它是由一个ip地址以及一个端口号组成.S ...

  8. python socket udp并发_Python进阶----UDP协议使用socket通信,socketserver模块实现并发

    Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:

  9. python socket 大文件_python:socket传输大文件示例

    #!/usr/bin/python # -*- coding: utf-8 -*- importsys reload(sys) sys.setdefaultencoding("utf-8&q ...

最新文章

  1. 统计机器学习第二章 感知机
  2. kernel 3.10内核源码分析--内核栈及堆栈切换
  3. 计算机辅助设计的概念.doc,计算机辅助设计的基础知识.DOC
  4. JVM证书制作步骤+耶鲁 CAS 配置
  5. Virtual DOM(虚拟dom-2)
  6. 三星S10指纹识别玩脱了!多家金融APP关闭指纹登陆功能
  7. nginx Alphabetical index of variables
  8. 对话框获取目录、文件路径
  9. 总结leetcode上【排列问题】【组合问题】【子集问题】回溯算法去重的两种写法!
  10. 最小生成树(Prim算法和Kruskal算法)
  11. 使用html2canvas实现超出浏览器部分截图
  12. linux命令行 jdb,什么使用加多宝(jdb)在linux下调试Java程序
  13. debian无法使用ifconfig
  14. 依赖倒转原则与里氏代换原则
  15. Breeze's MapHack 1.0 正式版发布【修正版发布】
  16. 哪一本科普书籍,会改变你的认知?
  17. 喜欢做的、都在做的、该做的和能做到的
  18. Java八大常用类小结
  19. 华为T2000网管软件使用之安装过程
  20. AutoCAD 2021中文授权版

热门文章

  1. 2019.8.8 2048小游戏
  2. AKKA Router路由
  3. windows安装各版本python解释器和anaconda
  4. Ubuntu下安装setuptools
  5. T-SQL 视图 事物 备份还原 分离附加
  6. Arcgis for Android解决中文字体乱码的问题
  7. 在DialogFragment中显示大图片
  8. pinfinder开源下载_BayesianNetworktool
  9. 计算机仿真保密,量子密钥分配方案的安全性研究及其计算机仿真
  10. java nio 连接数_Java NIO 基础一 NIO概念