Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 套接字编程问题[概念]_Python_Sockets - Fatal编程技术网

Python 套接字编程问题[概念]

Python 套接字编程问题[概念],python,sockets,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:

我对套接字非常陌生,一直在做一个基于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个连接。此待办事项的阈值是多少?在现实生活中,服务器通常可以处理多少个连接?

请考虑这样一个事实,即如果任意一端出现错误,并且连接处于打开状态,则代码将挂起一段时间。我读过。性能标签让我感到困惑。如何选择哪种方法更适合特定情况。在我的例子中,我有多个客户端通过套接字进行单个数据传输。所以在我看来,让他们等待没有意义?对吗?考虑一个事实,如果两端有错误,并且连接是打开的,那么代码将挂上相当长的一段时间。我读过。性能标签让我感到困惑。如何选择哪种方法更适合特定情况。在我的例子中,我有多个客户端通过套接字进行单个数据传输。所以在我看来,让他们等待没有意义?正确的?