Python中的Raspberry PI服务器/客户端套接字

2024-04-25 17:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的Raspberry Pi(运行Raspbian)和Macbook Pro(运行Mavericks)之间设置一个Python套接字。

两个设备都连接到我的appt中的同一个WiFi网络。我在RPi上运行服务器代码,然后在Macbook上运行客户端代码(我也尝试过相反的方法)。我认为我遗漏了一个设置步骤,因为我正在使用的代码是在多个站点上找到的,所以我认为它是有效的。我还检查了我的Macbook是否关闭了防火墙。

服务器代码:

from socket import *

host = "127.0.0.1"

print host

port = 7777

s = socket(AF_INET, SOCK_STREAM)

print "Socket Made"

s.bind((host,port))

print "Socket Bound"

s.listen(5)

print "Listening for connections..."

q,addr = s.accept()

data = raw_input("Enter data to be sent: ")

q.send(data)  

客户代码:

from socket import *

host = "127.0.0.1"

print host

port=4446

s=socket(AF_INET, SOCK_STREAM)

print "socket made"

s.connect((host,port))

print "socket connected!!!"

msg=s.recv(1024)

print "Message from server : " + msg

我得到错误:

Traceback (most recent call last):
  File "TCPclient.py", line 9, in <module>
    s.connect((host,port))         
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py",

line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 61] Connection refused

我执行代码的过程是:

  • 在RPi终端中键入“python TCPserver.py”

  • 在Macbook终端中键入“python TCPclient.py”

然后我在我的Macbook上收到错误消息,RPi上没有错误

我的问题是:

  1. 127.0.0.1是“主机”的正确输入吗?(请注意,我也尝试过“localhost”)
  2. 对于客户机和服务器代码,主机的输入必须相同吗?
  3. RPi和Macbook是否应该连接到同一个WiFi网络?
  4. 是否需要在RPi或我的Macbook上进行任何设置才能正常工作(请注意,我的RPi是B型,新的,在此之前我没有在它上设置任何其他设置)
  5. 你知道我为什么会收到这个错误以及如何修复它吗?

非常感谢您的帮助!!


Tags: 代码frompyimport网络服务器hostdata
1条回答
网友
1楼 · 发布于 2024-04-25 17:31:35

127.0.0.1是本地计算机的特殊IP地址。
必须在客户端代码中设置mac的真实IP地址(在LAN上)。
您还应该在服务器上绑定此IP,或者在0.0.0.0上绑定所有可用的IP地址。
您还必须在客户端和服务器上使用相同的端口号。

并回答您的问题:

127.0.0.1是“主机”的正确输入吗?(请注意,我也尝试过“localhost”)
127.0.0.1与localhost相同,表示本地计算机。如果在同一台机器上运行客户机和服务器,这将起作用,否则您需要mac的真实IP地址。在控制台中尝试ifconfig。

对于客户机和服务器代码,主机的输入必须相同吗?
是和否。在服务器上,您将绑定到端口和地址,因此您将等待此端口和地址上的连接。您可以使用IP地址,或0.0.0.0。

RPi和Macbook是否应该连接到同一个WiFi网络?
是和否。它将与同一个WiFi网络一起工作,但如果两个不同的WiFi网络直接连接在一起或与IP路由器连接,它也将与它们一起工作。大多数情况下,虽然它们是通过NAT(网络地址转换器)连接到internet的,但这样就不起作用了。

是否需要在RPi或我的Macbook上进行任何设置才能正常工作(请注意,我的RPi是B型的,是新的,在此之前我没有在它上设置任何其他设置)
我不太了解RPi,但它看起来像是标准的TCP套接字,应该可以开箱即用。

你知道我为什么会收到这个错误以及如何修复它吗?
正如我在开头所说:您试图连接到错误端口上的RPi(127.0.0.1)。

相关问题 更多 >