0

由于是 Python 新手,我正在关注一个示例,以获得简单的 TCP 连接。以下代码是服务器部分,但我想添加自己的构造函数,它接受其他值,例如名称和可能的 ID。

服务器如下:

#!/usr/bin/env python

import SocketServer


class MyTCPServer(SocketServer.ThreadingTCPServer):
    allow_reuse_address = True

class MyTCPServerHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        while 1:
            try:
                data = self.request.recv(1024).strip()

            except Exception, e:
                print "Error getting message. ", e

            if data:
                print data




server = MyTCPServer(('192.168.1.103', 13373), MyTCPServerHandler)
server.serve_forever()

客户端代码是:

#!/usr/bin/env python

import socket
import json

hostname = '192.168.1.103'
port = 13373

try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((hostname,port))

except Exception, e:
    print "Error, could not open socket: ", e

sock.send("HI")

在我的服务器中,我尝试添加一个def __init__(self, name, id),但这似乎不起作用。当我创建一个新服务器时

server = MyTCPServer(('192.168.1.103', 13373), MyTCPServerHandler)

我还想传递一个姓名和 ID。

阅读 SocketServer.ThreadingTCPServer 的文档,它说

__init__(self, server_address, RequestHandlerClass)
(Constructor)


Constructor. May be extended, do not override.
4

1 回答 1

1

我认为它可以帮助您理解这个概念

class A(object):
    def __init__(self):
        print "entering A"
        super(A, self).__init__()
        print "leaving A"

class B(object):
    def __init__(self):
        print "entering B"
        super(B, self).__init__()
        print "leaving B"

class C(A,B):
    def __init__(self):
        print "entering c"
        A.__init__(self)
        B.__init__(self)
        print "leaving c"
于 2013-10-14T14:22:59.710 回答