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模块更加的简洁迅速。

      

  • 相关阅读:
    Solr4.2 新特性 DocValues [转]
    Facet with Lucene
    Lucene 4.8
    Lucene 4.3
    lucene 4.0
    美团搜索-搜索引擎关键字智能提示的一种实现[转]
    C# 多线程编程,传参,接受返回值
    C# WebService服务器搭建、发布、上线、调试
    无线网卡连接网络后共享给本地有线网卡使用(Win10)
    C# 创建Dll文件供程序调用方法
  • 原文地址:https://www.cnblogs.com/felixwa/p/6054388.html
Copyright © 2011-2022 走看看