套接字编程问题[概念]

时间:2015-10-01 19:14:08

标签: python sockets

我对套接字非常新,并且一直在做一个基于python的小项目。

我写了一个简单的脚本,就是这样:

def runserver():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error, msg:
        print(msg[0])

    s.bind((host, port))
    s.listen(10)
    while True:
        client, address = s.accept()
        # !clients.append(client)
        request = client.recv(1024)
        params = request.split("|")
        if params[0] == "reg_user":
            print(params[1] + ", " + params[2])
            client.send("Registration Request Received.")
        elif params[0] == "login":
            print(params[1] + ", " + params[2])
            client.send("Login Request Received.")
            # !Handles administrative login
        elif params[0] == "admin_login":
            print("Administrator requested login.")
            res = admin_login(params[1], params[2])
            if res == 1:
                client.send("Login Successful!")
                print("Login Successful!")
            else:
                client.send("Login Failed!")
                print("Login Failed!")
        client.close()

    s.close()

# !main function
if __name__ == "__main__":
    runserver()

我的问题是,行

client.close()

此行是否会妨碍代码的性能? 我的意思是,每次进行套接字连接时,它都会被连接,然后断开连接。这意味着,如果应用程序需要进一步通信,则需要在进行任何进一步的业务之前重新连接到套接字。

我需要知道这是否会影响性能,如果是这样,如何克服这个问题?我想基本上使用持久连接,即在登录(成功)之后,不会断开连接,应用程序(客户端)和服务器可以不间断地通话。

问题的第二部分是:

s.listen(10)

我允许积压10个连接。此待办事项的阈值是多少?在现实生活中,服务器通常可以处理多少连接?

0 个答案:

没有答案