认识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()

 

posted @ 2018-10-07 13:49  _小溢  阅读(203)  评论(0)    收藏  举报