首页 文章

Python中的Raspberry PI Server /客户端套接字

提问于
浏览
3

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

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

Server Code:

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)

Client Code:

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

I get the error:

追溯(最近一次呼叫最后):
在<module>中的文件“TCPclient.py”,第9行
s.connect((主机,端口))
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py”,
第224行,在meth返回getattr(self._sock,name)(* args)socket.error:[Errno 61]连接被拒绝

My process for executing the code is:

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

  • 键入“python TCPclient.py进入Macbook终端

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

My questions are:

  • 127.0.0.1是"host"的正确输入吗? (请注意我也试过"localhost")

  • 主机的输入是否必须与客户端和服务器代码相同?

  • RPi和Macbook都应该连接到同一个WiFi网络吗?

  • 是否需要在RPi或我的Macbook上进行任何设置才能使其正常工作(请注意我的RPi是B型,新的,之前我没有在其上设置任何其他内容)

  • 您知道为什么我收到此错误以及如何解决此问题?

非常感谢您的帮助!!

2 回答

  • 3

    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 .

    客户端和服务器代码的主机输入必须相同吗?
    是的,不是 . 在服务器上你 bind 到一个端口和一个地址,所以你将等待这个端口和地址的连接 . 您可以使用IP地址,或0.0.0.0 .

    RPi和Macbook都应该连接到同一个WiFi网络吗?
    是的,不是 . 它可以使用相同的WiFi网络,但如果它们直接连接在一起或与IP路由器连接,它也可以与两个不同的WiFi网络一起使用 . 大多数时候,虽然他们通过NAT(网络地址转换器)连接到互联网,然后它将无法正常工作 .

    是否有任何设置需要在RPi或我的Macbook上完成才能实现(请注意我的RPi是模型B,新的,我之前没有设置任何其他内容)
    我不太了解RPi,但它看起来像标准的TCP套接字,应该开箱即用 .

    你知道为什么我收到这个错误以及如何解决它?
    正如我在开头所说:您尝试在错误的端口上连接到RPi(127.0.0.1) .

  • 0

    您已在端口7777上创建了一个侦听器,然后您在4446上连接了!!!!!

    只需连接你正在听的同一个端口=)

相关问题