zoukankan      html  css  js  c++  java
  • 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()
    读书使人心眼明亮
  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/7644304.html
Copyright © 2011-2022 走看看