python socket 主动断开_python之使用ctrl+c断开多线程(TcpSocketServer连接)出现端口占用的情况...
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连接)出现端口占用的情况...相关推荐
- python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案
python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接.问题解决方案: 前几天使用python读取网页.因为对一个网站大量的使用urlopen操作,所以 ...
- python socket 主动断开_Python网络编程tcp详解(基础篇十四)
网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...
- python socket connect 阻塞_python 网络编程(socketserver,阻塞,其他方法)
重点回顾: (重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题 只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输 粘包的发生主要是因为tcp协议有两个机制: ...
- python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...
长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...
- python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)-阿里云开发者社区...
长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...
- python socket tcp客户端_python网络编程socketserver模块(实现TCP客户端/服务器)
摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...
- python socket server库_python基础之socket与socketserver
---引入 Socket的英文原义是"孔"或"插座",在Unix的进程通信机制中又称为'套接字'.套接字实际上并不复杂,它是由一个ip地址以及一个端口号组成.S ...
- python socket udp并发_Python进阶----UDP协议使用socket通信,socketserver模块实现并发
Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:
- python socket 大文件_python:socket传输大文件示例
#!/usr/bin/python # -*- coding: utf-8 -*- importsys reload(sys) sys.setdefaultencoding("utf-8&q ...
最新文章
- 统计机器学习第二章 感知机
- kernel 3.10内核源码分析--内核栈及堆栈切换
- 计算机辅助设计的概念.doc,计算机辅助设计的基础知识.DOC
- JVM证书制作步骤+耶鲁 CAS 配置
- Virtual DOM(虚拟dom-2)
- 三星S10指纹识别玩脱了!多家金融APP关闭指纹登陆功能
- nginx Alphabetical index of variables
- 对话框获取目录、文件路径
- 总结leetcode上【排列问题】【组合问题】【子集问题】回溯算法去重的两种写法!
- 最小生成树(Prim算法和Kruskal算法)
- 使用html2canvas实现超出浏览器部分截图
- linux命令行 jdb,什么使用加多宝(jdb)在linux下调试Java程序
- debian无法使用ifconfig
- 依赖倒转原则与里氏代换原则
- Breeze's MapHack 1.0 正式版发布【修正版发布】
- 哪一本科普书籍,会改变你的认知?
- 喜欢做的、都在做的、该做的和能做到的
- Java八大常用类小结
- 华为T2000网管软件使用之安装过程
- AutoCAD 2021中文授权版