【问题标题】:Setting up a server that allows any client to connect设置允许任何客户端连接的服务器
【发布时间】:2023-03-21 13:59:01
【问题描述】:

我最近开始研究网络,所以我对这些主题很陌生。我一直在尝试设置一个服务器,该服务器允许客户端无论其位置如何都可以连接。我在网上搜索并能够使用 python 库套接字编写基本的回显服务器和客户端。但是,我不确定下一步该怎么做才能允许任何客户端连接到我的服务器。

我研究了静态 IP 地址,但由于我在上大学并且没有对路由器的管理员访问权限,所以我无法创建地址。

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: python sockets networking server client


    【解决方案1】:

    套接字在您的本地网络中使用更加安全,它允许您根据计算机的本地网络 IP 地址连接客户端和服务器(例如,一台计算机的 IP 地址可以是 192.168.1.35,而另一台计算机的 IP 地址可以是 192.168.1.96)。当您想将客户端与不在同一网络下的服务器连接时,问题会更大一些,因为您需要通过防火墙,这可能很危险。我建议您首先编写一个有效的客户端和服务器的代码,并了解如何在它们之间传输数据,然后将其提升到一个新的水平。如果您需要,我有一些基本的 Python 套接字代码,如果您需要,我可以在此处添加。

    代码:

    server.py

    ​​>
    import socket
    server_socket = socket.socket()
    server_socket.bind(('0.0.0.0', 20000))
    server_socket.listen(1)
    (client_socket, client_address) = server_socket.accept()
    client_name = client_socket.recv(1024)
    what_to_send = 'Hello ' + client_name.decode()
    client_socket.send(what_to_send.encode())
    client_socket.close()
    server_socket.close()
    

    client.py

    ​​>
    import socket
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    my_socket.connect(('127.0.0.1', 20000))
    name = input("Enter your name: ")
    my_socket.send(name.encode())
    data = my_socket.recv(1024)
    print(data.decode())
    my_socket.close()
    

    注意:端口 20000 是随机选择的,没有具体原因,尽管您应该阅读有关端口的信息(为了不脱离主题,我会说端口范围是 1024-65535)。此外,在 client.py 文件中,IP 地址“127.0.0.1”表示您要连接的服务器在同一台计算机上运行。这意味着这里带有这个特定 IP 地址的代码只有在您在同一台计算机上运行服务器和客户端时才有效。

    【讨论】:

    • 好吧,这是有道理的。我将从基础开始编写客户端和服务器。如果您可以上传这些示例,那将是一个巨大的帮助。
    • 我添加了代码供您使用。如果您还有其他问题可以提出,我会尽力提供答案。 @Ncampy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-06-01
    • 2022-08-20
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多