python 并发编程 多线程 多线程实现并发的套接字通信
2024-09-02 17:43:46
进程内会生成一个主线程,让主线程执行server函数,server函数核心是accept(),让主线程干accept的工作, 建立连接,每建立一个连接应该执行通信函数
每建立一个连接就是生成一个子线程
服务端
from socket import *
from threading import Thread def communicate(conn):
''' 通信功能 '''
while True:
try:
data = conn.recv(1024)
if not data:break
conn.send(data.upper()) except ConnectionResetError:
break conn.close() def server(ip,port):
''' 负责建立连接 accept''' server = socket(AF_INET, SOCK_STREAM)
server.bind((ip,port))
server.listen(5) while True:
conn,addr = server.accept() t = Thread(target=communicate, args=(conn,),)
t.start() server.close() if __name__ == "__main__":
server('127.0.0.1', 8080)
客户端
from socket import * client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080)) while True:
msg = input(">>>:").strip()
if not msg:break
client.send(msg.encode("utf-8"))
data = client.recv(1024)
print(data.decode("utf-8")) client.close()
执行结果
最新文章
- uva 1599 ideal path(好题)——yhx
- C++与C的指针的不同
- hdu2068RPG的错排
- 在SecureCRT中使用rz和sz传输文件
- iOS: 如何正确的绘制1像素的线
- freeCodeCamp:Title Case a Sentence
- 【jQuery基础学习】06 jQuery表单验证插件-Validation
- for 穷举、迭代 while循环
- 所有外包项目威客网站列表----来自程序员接私活网qxj.me
- [转] web.xml文件详解
- dokcer 运行和进入容器
- HDU2504:又见GCD
- PrintWriter用法简析
- 爬取拉勾部分求职信息+Bootstrap页面显示
- JavaScript基本语法2
- jquery各种事件使用方法总结(from:天宇之游)
- 关闭PHP的opcache缓存
- excel的C#操作教程
- C# 读取Excel表格内容,以及NPOI的使用
- SCRIPT7002: XMLHttpRequest: 网络错误 0x2efe, 由于出现错误 00002efe 而导致此项操作无法完成
热门文章
- Python可迭代序列反转总结
- javascript中constructor指向问题
- os.system 的坑,'C:\Program' 不是内部或外部命令,也不是可运行的程序 或批处理文件
- C# 之抽象类
- Idea 一个窗口打开多个项目
- Spring 动态多数据源
- SpringBoot整合Elastic-job(详细)
- 小程序上传wx.uploadFile - 小程序请假-请求
- Selenium 环境安装
- TC-SRM391-div2-SortingGame(BFS,STL)