zoukankan      html  css  js  c++  java
  • socket

    前面提到如何使用socket模块启动tcpserver:

    创建socket:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    绑定ip:sock.bind(ip,port)

    监听端口:sock.listen(1)

    接受连接: sock.accept()

    现在我们使用一个更简单的方法创建一个TCP server。这就是SocketServer模块。这个模块提供了Socket关于TCP和UDP server的封装。

    先上代码:

    import SocketServer
    import sys
    import argparse
    
    class TCPrequesthander(SocketServer.BaseRequestHandler):
        def handle(self):
            self.data = self.request.recv(1024).strip()
            print "{} wrote:".format(self.client_address[0])
            print self.data
            self.request.sendall(self.data.upper())
            
    def startTCPserver(ip, port):
    
        serverAddr = (ip, port)
        server = SocketServer.TCPServer(serverAddr, TCPrequesthander)
        server.serve_forever()
        
    
    if __name__ == '__main__':
        arg = argparse.ArgumentParser(description='input port and ip')
        arg.add_argument('-i', help='input the ip address')
        arg.add_argument('-p', type=int, help='input the port')
        args = arg.parse_args()
        print 'ip : port ' + args.i +" " + str(args.p)
        startTCPserver(args.i, args.p)    
    

    代码测试:

    在服务器上启动如下:

    # python socketserver_1_tcpserver.py -i 10.135.13.157 -p 12345
    ip : port 10.135.13.157 12345

    使用tcp client发送消息:

    10.135.13.154 wrote:
    echo message
    10.135.13.154 wrote:
    echo message

    代码分析:

    首先在SocketServer模块中需要创建一个handler的类,这个类用于连接的处理。

    这个类的基类为SocketServer.BaseRequestHandler, 提供handle(), finish(),setup()三个函数,一般使用handle。

    我们在TCPrequesthander继承基类,重写handle()函数,处理消息。

    第二步骤使用SocketServer中提供的TCPserver启动一个TCPserver。需要两个参数:

      地址: (ip, port)

         handler: 我们创建的TCPrequesthander

    代码完成。相对于socket模块更加的简洁迅速。

      

  • 相关阅读:
    暗通道先验去雾算法及其几何意义的解释
    几种去雾算法介绍
    大气散射模型的推导
    散射介质环境中偏振成像图像的去散射方法
    最近的笔面试题知识整理一
    了解 Web Service
    数梦工厂笔试题回顾一----finally在return之后执行还是之前?
    Struts2的配置文件的加载
    Struts2中Action配置
    struts.xml的语法
  • 原文地址:https://www.cnblogs.com/felixwa/p/6054388.html
Copyright © 2011-2022 走看看