博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非阻塞套接字实现并发处理
阅读量:6833 次
发布时间:2019-06-26

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

服务端

import socketserver = socket.socket()server.setblocking(False)server.bind(('0.0.0.0',8080))server.listen(1000)all_connection = []#所有连接的客户端,用集合比列表更快while True:    try:        connection,remote_address = server.accept()#非阻塞对等连接套接字生成        connection.setblocking(False)#connection是新生成的,也需要设置成非阻塞        all_connection.append(connection)    except BlockingIOError:        pass    to_handler = [connection for connection in all_connection]    for connection in to_handler:        try:            recv_data = connection.recv(1024)            if recv_data:                print(recv_data)                connection.send(recv_data)            else:                connection.close()                all_connection.remove(connection)#如果这个客户已经处理完毕,就移除        except BlockingIOError:            pass

客户端

import sockethost = '192.168.215.128'port = 8080client = socket.socket()client.connect((host,port))# client.send(b'haha')msg = input('-->')client.send(msg.encode('utf-8'))recv_data = client.recv(1024)print(recv_data.decode('utf-8'))client.close()

 

转载于:https://www.cnblogs.com/Gluneko/p/9550961.html

你可能感兴趣的文章
使用UIWebView打开部分文件
查看>>
docker windows container的一些注意点
查看>>
拥抱博客园
查看>>
yum使用详细
查看>>
2.字符串
查看>>
Linux权限管理命令
查看>>
[转]关于strtok和strtok_r函数的深度研究
查看>>
ios-自定义点击状态栏滚回顶部
查看>>
Django现有模型增加字段
查看>>
解决IE6浏览器下position:fixed固定定位问题
查看>>
Rest分页接口开发
查看>>
Mybatis中oracle如何批量insert语句
查看>>
org.aspectj.lang.JoinPoint-中文简要API(转)
查看>>
面向对象知识
查看>>
数据库中算式的简单例子
查看>>
AVFoundation自定义拍照
查看>>
测试显示GitHub的Gist
查看>>
JavaScript学习——JavaScript基础
查看>>
JSP学习-07Cookie 与Session
查看>>
VBA 从excel取数据到mdb里面,如果有重复则更新数据
查看>>