我正嘗試使用python的套接字模塊(python 2.7)在PC(macbook)和Raspberry Pi 2之間進行無線通信。服務器是PC,客戶端是Pi。 當我運行代碼(服務器第一然後客戶端)時,兩個腳本恭敬地卡在socket.accept()和socket.connect()方法上。PC to Raspberry Pi通過TCP/IP套接字
有趣的是,當我做相反的事情時(Pi是服務器,PC是客戶端),代碼工作正常,數據正確發送。
下面的腳本是爲了永遠循環下去,同時增加發送的計數器(我增加了港口的每一個成功的轉移後,以避免「[錯誤48]地址已在使用」(可能是可怕的做法,我知道))
我的客戶端腳本:
import socket
import sys
def read(port):
s = socket.socket()
host = '10.19.92.44' #(IP address of PC (server))
s.connect((host,port))
try:
msg = s.recv(1024)
s.close()
except socket.error, msg:
sys.stderr.write('error %s'%msg[1])
s.close()
print 'close'
sys.exit(2)
return msg
if __name__ == '__main__':
port = 1025
while True:
print 'hey, checking TCP socket'
data = read(port)
print 'i just read %s' % data
print 'port num is: %d' % port
port = port + 1
我的服務器腳本:
import socket
import time
def send(data, port):
s = socket.socket()
s.bind(('', port))
s.listen(5)
c, addr = s.accept()
print 'Got connection from',addr
c.send(data)
c.close()
if __name__ == '__main__':
port = 1025
num = 1
while True:
print 'hey, sending data'
words = 'helloWorld'
data = words + str(num)
print 'send data: %s' % data
send(data,port)
port = port + 1
num = num + 1
正如我提到的,當我換角色(和更換服務器IP地址在客戶端腳本Pis 172.17.33.125)代碼工作正常...
任何想法/建議嗎?
非常感謝你
感謝您的回覆。你說得對,他們在不同的網絡上。當我用我的PC和以太網與Pi一起使用以太網時,它工作。不幸的是我需要無線coms,因爲它是一個機器人,所以我可能不得不選擇一些更原始的東西 - zigbee :( –