zoukankan      html  css  js  c++  java
  • socketserver模块

    基于tcp协议通信
    服务端必须满足至少三点:
    1. 绑定一个固定的ip和port
    2. 一直对外提供服务,稳定运行
    3. 能够支持并发
    # 服务端必须满足至少三点:
    # 1. 绑定一个固定的ip和port
    # 2. 一直对外提供服务,稳定运行
    # 3. 能够支持并发
    import socketserver
    
    # 自定义类用来处理通信循环
    class MyTCPhanler(socketserver.BaseRequestHandler):
        def handle(self):
            while True:
                try:
                    data = self.request.recv(1024)
                    if len(data) == 0: break  # 针对linux系统
                    print('-->收到客户端的消息: ', data)
                    self.request.send(data.upper())
                except ConnectionResetError:
                    break
    
            self.request.close()
    
    
    if __name__ == '__main__':
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhanler)
        server.serve_forever() # 链接循环
    服务端
    from socket import *
    
    client = socket(AF_INET, SOCK_STREAM)
    client.connect(('127.0.0.1', 8081))
    
    # 通信循环
    while True:
        msg=input('>>: ').strip() #msg=''
        if len(msg) == 0:continue
        client.send(msg.encode('utf-8')) #client.send(b'')
        client.send('hello'.encode('utf-8')) #client.send(b'')
        print('has send')
        data=client.recv(1024)
        print('has recv')
        print(data)
    
    client.close()
    
    或
    from socket import *
    
    client = socket(AF_INET, SOCK_STREAM)
    client.connect(('127.0.0.1', 8081))
    
    # 通信循环
    while True:
        client.send('hello'.encode('utf-8')) #client.send(b'')
        data=client.recv(1024)
        print(data)
    
    client.close()
    客户端

    基于udp协议通信

    import socketserver
    
    class MyUdphandler(socketserver.BaseRequestHandler):
        def handle(self):
            data,sock=self.request
            sock.sendto(data.upper(),self.client_address)
    
    if __name__ == '__main__':
        server=socketserver.ThreadingUDPServer(('127.0.0.1',8081),MyUdphandler)
        server.serve_forever()
    服务端
    from socket import *
    
    client=socket(AF_INET,SOCK_DGRAM)
    
    while True:
        client.sendto(b'hello',('127.0.0.1',8081))
        data,server_addr=client.recvfrom(1024)
        print(data)
    客户端
  • 相关阅读:
    通过唯一ID实现简单的日志跟踪实现
    从零单排入门机器学习:Octave/matlab的经常使用知识之矩阵和向量
    zoj 1671 Walking Ant
    JDBC基础
    Android从源码看ListView的重用机制
    JavaScript设计模式 Item9 --适配器模式Adapter
    C++11新特性之 std::forward(完美转发)
    [组合数]求组合数的几种方法总结
    HDU 4005 The war(双连通好题)
    Workspace in use or cannot be created, choose a different one.--错误解决的方法
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/11253698.html
Copyright © 2011-2022 走看看