博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于多线程实现套接字服务端支持并发
阅读量:6604 次
发布时间:2019-06-24

本文共 1088 字,大约阅读时间需要 3 分钟。

进程池|线程池(同步,异步  阻塞,非阻塞) 多线程:IO密集型 多进程:计算密集型 线程是cpu运行单位,进程是资源单位
from socket import *from threading import Threaddef comunicat(conn):    while True:  # 通信循环        try:            data = conn.recv(1024)            if len(data) == 0: break            conn.send(data.upper())        except ConnectionResetError:            break    conn.close()def server(ip, port, backlog=5):    server = socket(AF_INET, SOCK_STREAM)    server.bind((ip,port))    server.listen(backlog)    while True:  # 链接循环        conn, client_addr = server.accept()        print(client_addr)        #通信        t=Thread(target=comunicat,args=(conn,))        t.start()if __name__ == '__main__':    s=Thread(target=server,args=('127.0.0.1',8081))    s.start()
服务端
from socket import *client=socket(AF_INET,SOCK_STREAM)client.connect(('127.0.0.1',8081))while True:    msg=input(">>:").strip()    if len(msg) == 0: continue    client.send(msg.encode('utf-8'))    data=client.recv(1024)    print(data.decode('utf-8'))
客户端

实现在服务端开启时,可以运行多个客户端,但是有一万个客户端时,服务端会开多个线程来运行,这样就会很耗资源

转载于:https://www.cnblogs.com/zhouhao123/p/10994487.html

你可能感兴趣的文章
两个viewport的故事(第二部分)
查看>>
display:table-cell的应用
查看>>
在micropython固件中增加自己的模块
查看>>
【数学】数论进阶-常见数论函数
查看>>
第一轮复习Servlet day04
查看>>
Babel下的ES6兼容性与规范
查看>>
【iOS开发】视图控制器加载和卸载时的几个函数
查看>>
python——装饰器
查看>>
事件的绑定
查看>>
.htaccess内容
查看>>
关于表单重复提交问题
查看>>
port 22: Connection refused
查看>>
java中关键字volatile的作用(转载)
查看>>
基础查询语句
查看>>
Linux 硬链接、软链接
查看>>
ORACLE PL/SQL编程之六: 把过程与函数说透
查看>>
[.Net线程处理系列]专题五:线程同步——事件构造
查看>>
Welcom To My Blog
查看>>
windows 下使clion支持c++11操作记录
查看>>
组件里传值到父级
查看>>