socketserver模块

server.py()

from socket import *
ip_port = ('127.0.0.1', 8800)
tcp_socket_server = socket()
tcp_socket_server.bind(ip_port)
tcp_socket_server.listen(5)
while 1:
    conn, addr = tcp_socket_server.accept()
    print('客户端',addr)
    while 1:
            client_data = conn.recv(1024)
            print(client_data.decode("utf-8"))
            if client_data.decode("utf-8") == "exit":
                print("客户端断开连接,等待新的用户连接")
                break
            print('接收数据>>>',str(client_data, "utf8"))
            response = input("响应数据>>>")
            conn.sendall(bytes(response, "utf8"))
    conn.close()

多高并发的:

client.py

import socket
ip_port = ('127.0.0.1', 8880)
sock = socket.socket()
sock.connect(ip_port)
print("客户端启动:")
while True:
    inp = input('发送数据>>>')
    sock.sendall(bytes(inp, "utf8"))
    if inp == "exit":
        break
    server_response=sock.recv(1024)
    print("服务器响应数据>>>", str(server_response,"utf8"))

socker_server.py

import socketserver

'''
socketserver使用模式
1 功能类
    class MyServer(socketserver.BaseRequestHandler): #继承这个类
        def handle(self):
            pass
2 server = socketserver.ThreadingTCPServer(('127.0.0.1', 8800), MyServer)

3 server.serve_forever()

'''

class MyServer(socketserver.BaseRequestHandler): #继承这个类
    def handle(self):
        """
        并发的业务逻辑
        conn
        :return:
        """
        while 1:
            client_data = self.request.recv(1024) 
            print(client_data.decode("utf-8"))
            if client_data.decode("utf-8") == "exit":
                print("客户端断开连接,等待新的用户连接")
                break
            print('接收数据>>>',str(client_data, "utf8"))
            response = input("响应数据>>>")
            self.request.sendall(bytes(response, "utf8"))
        self.request.close()
#1 self.socket  2 self.socket.bind()   3 self.socket.listen(5)   (初始化的过程中它帮我们做了这3件事情) 
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8880), MyServer) #封装TCP协议相关的套接字对象
server.serve_forever()

这里ThreadingTCPServer是基于TCP, 也有基于UDP的ThreadingUDPServer  ---->>>多线程并发

ForkingTCPServer  ----->>> 多进程并发的,创建的是多进程而不是多线程了

猜你喜欢

转载自www.cnblogs.com/shengyang17/p/9696287.html