【问题标题】:Creating a server on python在 python 上创建服务器
【发布时间】:2021-11-25 05:00:40
【问题描述】:

我正在尝试使用 python 在我的树莓派上创建一个服务器,然后我想通过使用树莓派的 IP 地址从另一台设备访问它来测试服务器,但问题是每次我输入 IP我的树莓派地址进入我的网页,它没有打开,我不知道我的代码是否有问题,我会写在下面,以便任何人都可以检查

import socket    
import sys

my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()

try:
    my_socket.bind((host, 1234))
except socket.error:
    print(‘failed’)   
    sys.exit()

my_socket.listen(5)

While True:
    conn, addr = my_socket.accept() 
    data = conn.recv(1000)
   
    if data:
        print(‘got a request’)
        my_socket.send(‘Thank you’)
   
my_socket.close()
conn.close()

之后,我尝试在笔记本电脑的网页上输入树莓派的 IP 地址,但没有用,首先我在树莓派的终端中输入 ifconfig 以获取 IP 地址,我尝试了,但没有成功,然后我在代码中添加了另一行 gethostbyname 到变量 host 并打印它,它显示的 IP 地址与 ifconfig 中的 IP 地址不同,这让我感到困惑,但我什至在我的网页上尝试了另一个 IP 地址,但它没有也不行

【问题讨论】:

  • 你的代码至少有一个问题:while需要用小写的w拼写。
  • 为什么你的代码是双倍行距
  • python3 -m http.server 从命令行启动一个简单的服务器,您应该能够从网络上的任何设备访问。
  • 确保您发布准确源代码,除非您的文件中确实有智能引号,在这种情况下这是一个问题。

标签: python sockets server raspberry-pi


【解决方案1】:

您是否使用 netstat 检查代码是否真的在监听?应该将 : 列为 LISTENING,我总是在执行服务器代码时检查。

有时当您尝试代码但没有正确终止它时,可能会有一个孤立进程仍在侦听 Interface:Port 占用端口。去过那里,完成了,得到了 T 恤。

另外,尝试使用 0.0.0.0 代替,它告诉套接字侦听器侦听所有接口,包括环回。

有防火墙拒绝连接吗?检查一下。

另外,请尝试使用 curl 作为调试工具,看看 1) Curl 是否可以连接,以及 2) 你是否可以向服务器发送一些 HTTP 数据:

Curl 127.0.0.1:1234/HelloWorld

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2017-02-01
    • 2020-08-15
    • 2013-01-14
    相关资源
    最近更新 更多