第71学习python使用socketsever实现服务端的并发
网络协议的最底层就是socket,基于原有socket模块,又封装了一层,就是socketserver
socketserver 为了实现tcp协议,server端的并发
服务器端:
import socketserver
#实例化一个循环,消息发送和接受,相当于scoket里面的通信循环
class Mysever(socketserver.BaseRequestHandler):
def handle(self):
print("conn is:",self.request) #con
print("addr is:",self.client_address) #addr
while True: #通信循环
#收消息
try:
data=self.request.recv(1024)
if not data :break #如果接受一直空直接退出
print("收到客户发来的消息:",data)
#发消息
self.request.sendall(data.upper())
except Exception as e:
print(e)
if __name__=="__main__":
#相当建立连接conn
s=socketserver.ThreadingTCPServer(("127.0.0.1",8080),Mysever) #多线程,可以开几个连接进行接受,连接后实例化(Mysever)通信循环
s.serve_forever() #循环调用,永远服务
#socket 有连接循环 和通信循环 。多并发原理和scokte一致
客户端1:
import socket
from socket import *#tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_port=("127.0.0.1",8080)
back_log=5
buffer_size=1024
tcp_client=socket(AF_INET,SOCK_STREAM)
tcp_client.connect(ip_port)
while True:
mgs=input(">>>").strip()
if not mgs: continue #如果是空请继续
if mgs=="qiut":break #如果是qiut 直接退出
tcp_client.send(mgs.encode("utf-8"))
print("客户端已经发送消息")
data=tcp_client.recv(buffer_size)
print("收到服务器发来的消息",data.decode("utf-8"))
tcp_client.close()
客户端2:
tcp_client=socket(AF_INET,SOCK_STREAM)
tcp_client.connect(ip_port)
while True:
mgs=input(">>>").strip()
if not mgs: continue #如果是空请继续
if mgs=="qiut":break #如果是qiut 直接退出
tcp_client.send(mgs.encode("utf-8"))
print("客户端已经发送消息")
data=tcp_client.recv(buffer_size)
print("收到服务器发来的消息",data.decode("utf-8"))
tcp_client.close()
结果:
E:\pycharm\python\python.exe E:/python资料/helloword/服务器scoketsever.py
conn is: <socket.socket fd=476, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 51441)>
addr is: ('127.0.0.1', 51441)
收到客户发来的消息: b'hello'
conn is: <socket.socket fd=520, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 51443)>
addr is: ('127.0.0.1', 51443)
收到客户发来的消息: b'ninhao'
posted on 2019-11-19 22:17 坚持是多么伟大的事情 阅读(212) 评论(0) 编辑 收藏 举报