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()
    读书使人心眼明亮
  • 相关阅读:
    javaday19_List接口_Set接口
    01玩转数据结构_04_最基础的动态数据结构:链表
    10 拖拽的对话框_滚动条_放大镜_
    01玩转数据结构_03_栈和队列
    java小技巧
    01玩转数据结构_02_不要小瞧数组
    01玩转数据结构_01_课程介绍
    javaday18_ArrayList
    JZOJ.3777【NOI2015模拟8.17】最短路(shortest)
    JZOJ.5230【NOIP2017模拟8.5】队伍统计
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/7644304.html
Copyright © 2011-2022 走看看