我有一个运行在Arduino板上的套接字服务器,并试图通过Python脚本来控制它。使用基本的例子插座的文档,我有这样的:当我注释掉线,用来接收服务器的响应Python套接字recv()问题
import socket
import sys
TCP_IP = '192.168.254.100'
TCP_PORT = 5012
BUFFER_SIZE = 1024
MESSAGE = "Status"
# Create a TCP/IP socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
# data = s.recv(BUFFER_SIZE)
# print (data)
s.close()
sys.exit()
我的脚本工作正常。但是,如果我尝试读取响应,则我的服务器和python脚本会挂起。
在服务器端,这里是一个什么样的代码看起来像一个片段:
void loop() {
// listen for incoming clients
client = server.available();
if (client){
Serial.println("Client connected");
while (client.connected()){
// Read the incoming TCP command
String command = ReadTCPCommand(&client);
// Debugging echo command to serial
command.trim();
Serial.println(command);
// Debugging echo command back to client
client.println(command);
// Phrase the command
PhraseTCPCommand(&client, &command);
}
// Stop the client
client.stop();
Serial.println("Client disconnected");
}
}
我利用服务器的库是Arduino WiFi库。 函数PhraseTCPCommand接收命令并触发板上GPIO引脚的外部事件。当recv()被注释掉时,这个动作被Python脚本正确执行。从服务器发送的响应字符串以换行符和回车结束。这可能会导致问题吗?
此外,我能够使用telnet,netcat或PuTTY从服务器连接和接收响应,这使得我相信这是与我的Python脚本尝试读取来自服务器。
您介意向我们展示您的Arduino代码吗? – MikeCAT