• socketserver模块


    socketserver模块

    #socketserver服务端
    #使用socketserver写服务端
    #导入模块
    import socketserver
    
    #自己定义一个类,必须继承BaseRequestHandler
    class MyTcp(socketserver.BaseRequestHandler):
        #必须重写handle方法
        def handle(self):
            try:
                while True :  #通信循环
                    # print(self)
                    #给客户端回消息
                    #conn对象就是request
                    #接收数据
                    print(self.client_address)
                    data=self.request.recv(1024)
                    print(data)
                    if len(data)==0:
                        return
                    #发送数据
                    self.request.send(data.upper())
            except Exception:
                pass
    
    
    if __name__ == '__main__':
        #实例化得到一个tcp连接的对象,Threading意思是说,只要来了请求,它自动的开线程来处理连接跟交互数据
        #第一个参数是绑定的地址,第二个参数传一个类
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8009),MyTcp)
        #一直在监听
        #这么理解:只要来一个请求,就起一个线程(造一个人,做交互)
        server.serve_forever()
    
    
    #client_通信循环
    import socket
    import time
    soc=socket.socket()
    
    soc.connect(('127.0.0.1',8009))
    while True:
        soc.send('xxxx'.encode('utf-8'))
        print(soc.recv(1024))
    
    

    socketserver模块udp

    #client通信循环
    import socket
    #udp
    client=socket.socket(type=socket.SOCK_DGRAM)
    
    client.sendto('lqz'.encode('utf-8'),('127.0.0.1', 8009))
    # client.sendto('hello'.encode('utf-8'),('127.0.0.1', 8009))
    # client.sendto('world'.encode('utf-8'),('127.0.0.1', 8009))
    # client.sendto(''.encode('utf-8'),('127.0.0.1', 8009))
    data=client.recvfrom(1024)
    print(data)
    
    
    #client通信循环2
    import socket
    import time
    soc=socket.socket()
    
    soc.connect(('127.0.0.1',8009))
    while True:
        soc.send('yyy'.encode('utf-8'))
        print(soc.recv(1024))
    
    
    
    #socketse服务端
    #使用socketserver写服务端
    #导入模块
    import socketserver
    
    #自己定义一个类,必须继承BaseRequestHandler
    class MyTcp(socketserver.BaseRequestHandler):
        #必须重写handle方法
        def handle(self):
            print(self)
            #数据
            print(self.request[0])
            print(self.request[1])
            print(type(self.request[1]))
            self.request[1].sendto('xxxx'.encode('utf-8'),self.client_address)
            # try:
            #     while True :  #通信循环
            #         data=self.request.recvfrom(1024)
            #         print(data)
            # except Exception:
            #     pass
    
    
    if __name__ == '__main__':
        #实例化得到一个tcp连接的对象,Threading意思是说,只要来了请求,它自动的开线程来处理连接跟交互数据
        #第一个参数是绑定的地址,第二个参数传一个类
        server=socketserver.ThreadingUDPServer(('127.0.0.1',8009),MyTcp)
        #一直在监听
        server.serve_forever()
    
    
  • 相关阅读:
    python文件打开方式详解——a、a+、r+、w+、rb、rt区别
    io.UnsupportedOperation: can't do nonzero cur-relative seeks”错误
    端口三种模式:access,hybrid,trunk
    水仙花数
    maktrans和translate详解
    实战NFS服务搭建与配置
    except 配合 shell实现公钥分发脚本
    linux系统免秘钥分发文件
    rsync + inotify 实现远程实时同步数据
    通过rsync实现全网数据备份检查脚本
  • 原文地址:https://www.cnblogs.com/aden668/p/11493514.html
Copyright © 2020-2023  润新知