认识socketserver
2024-10-09 23:44:18
1.服务端
# 如果socket起一个tcp服务,在同一个时间只能和一个客户端通信 # 如果socketserver起一个服务,在同一个时间就可以和多个客户端通信了 # socketserver
# 是基于soccekt又进行了一层的封装 import socketserver # 要起socketserver,先写一个类
class MyServer(socketserver.BaseRequestHandler): # 必须继承一个socketserver处理基础请求的基类
def handle(self): # 必须有一个handle函数
# print(self.request.recv(1024)) # request相当于一个conn(一个客户端连接上来的连接符)
while True:
msg = self.request.recv(1024).decode('utf-8') print(msg)
info = input('输入发送到客户端的内容:')
self.request.send(info.encode('utf-8')) if __name__ == '__main__':
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyServer) # 目的用多线程处理每个客户端连接请求.参数为ip端口与Myserver类名,得到一个对象
server.serve_forever() # 永远起一个socketserver tcp服务.
客户端1
import socket sk = socket.socket() ip_port = ('127.0.0.1', 8080) sk.connect(ip_port) while True:
msg = input('发送到服务端的内容: ') if msg == 'q':
sk.send(b'q')
break sk.send(('饿了么:' + msg).encode('utf-8'))
ret = sk.recv(1024).decode('utf-8')
print(ret) sk.close()
客户端2
import socket sk = socket.socket() ip_port = ('127.0.0.1', 8080) sk.connect(ip_port) while True:
msg = input('发送到服务端的内容: ') if msg == 'q':
sk.send(b'q')
break sk.send(('饿了么:' + msg).encode('utf-8'))
ret = sk.recv(1024).decode('utf-8')
print(ret) sk.close()
最新文章
- [Keras] Install and environment setting
- blowfish ECB decode
- Win7环境下Eclipse连接Hadoop2.2.0
- JavaScript Patterns 3.6 Regular Expression Literal
- Apache Commons CLI 简介
- 51中的C语言数据类型
- POJ3253 Haffman
- 您在基于 Windows 7 的或基于 Windows Server 2008 R2 的计算机上读取器中插入智能卡时出现错误消息:";设备驱动程序软件未能成功安装";
- 汉字转拼音的vc++程序源代码
- Java完成简单猜数字游戏v2.0
- mac攻略(2) -- apache站点配置
- 《第六周java学习笔记》
- oracle表被锁(delete或update一直处于执行状态)的处理办法。
- Ajax请求 一般处理程序参数传递的几种方式
- python的类和对象
- 转录本组装软件StringTie的使用说明
- AngularJS初始化静态模板
- Vue页面跳转$router.push 的用法
- eclipse to avoid the message, disable the...
- OpenCV人脸识别的原理 .