认识socketserver
Posted whylinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识socketserver相关的知识,希望对你有一定的参考价值。
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()
以上是关于认识socketserver的主要内容,如果未能解决你的问题,请参考以下文章