• Socketserver


     Socketserver:

    基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环
    
    socketserver模块中分两大类server类(解决链接问题)和 request类(解决通信问题)
    基于tcp  的socketserver我们自己定义的类中的
    
      self.server即套接字对象
      self.request即一个链接
      self.client_address即客户端地址
    基于udp  的socketserver我们自己定义的类中的
    
      self.request是一个元组(第一个元素是客户端发来的数据,第二部分是服务端的udp套接字对象),如(b'adsf', <socket.socket fd=200, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('127.0.0.1', 8080)>)
      self.client_address即客户端地址

    线程实现: 

                 

    进程实现:

    socketserver —— 实现ftp server端和client端的交互

    import socketserver
    
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            conn = self.request
            conn.sendall(bytes('欢迎致电 10086,请输入1xxx,0转人工服务.',encoding='utf-8'))
            Flag = True
            while Flag:
                data = conn.recv(1024).decode('utf-8')
                if data == 'exit':
                    Flag = False
                elif data == '0':
                    conn.sendall(bytes('通过可能会被录音.balabala一大推',encoding='utf-8'))
                else:
                    conn.sendall(bytes('请重新输入.',encoding='utf-8'))
    
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',8008),MyServer)
        server.serve_forever()
    import socket
    
    ip_port = ('127.0.0.1',8008)
    sk = socket.socket()
    sk.connect(ip_port)
    sk.settimeout(5)
    
    while True:
        data = sk.recv(1024).decode('utf-8')
        print('receive:',data)
        inp = input('please input:')
        sk.sendall(bytes(inp,encoding='utf-8'))
        if inp == 'exit':
            break
    
    sk.close()
    读书使人心眼明亮
  • 相关阅读:
    C# 打开模态对话框 和打开文件夹
    C# 统计字符串出现的个数
    html table内容不随标题滚动
    log4net 局部代码 看不懂....
    js的replace, 高亮, insertAdjacentHTML , tbody.innerHTML
    python之tkinter使用举例-Button
    使用pygal_maps_world.i18n中数据画各大洲地图
    使用pygal_maps_world展示世界地图
    python之pygal:掷两个不同的骰子并统计大小出现次数
    python之文件目录操作
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/7644304.html
Copyright © 2020-2023  润新知