मैं ईथरनेट शील्ड के साथ एक Arduino Uno का उपयोग कर रहा हूं।Arduino (Uno) ईथरनेट क्लाइंट कनेक्शन कई क्लाइंट प्रिंटों के बाद विफल रहता है
कई HTTP अनुरोध भेजने के बाद, client.println (...), क्लाइंट कनेक्ट होने पर विफल होने लगते हैं। विफलता का समय यादृच्छिक प्रतीत होता है, और लूप से अनुक्रम रीडआउट ~ 1000 और ~ 7000 के बीच कहीं भी भिन्न हो सकता है।
त्रुटि बह निकला ईथरनेट संचारित बफर से कोई लेना देना (this advice के बाद)
यहाँ कोड है कि विफल हो रहा है है नहीं है:
#include <Ethernet.h>
#include <SPI.h>
// Network constants
byte mac[] = {0x00, 0x23, 0xdf, 0x82, 0xd4, 0x01};
byte ip[] = {/*REDACTED*/};
byte server[] = {/*REDACTED*/};
int port = /*REDACTED*/;
Client client(server, port);
// State
int sequence;
void setup(){
Ethernet.begin(mac, ip);
Serial.begin(9600);
sequence = 0;
delay(1000);
}
void loop(){
httpPut("/topic/:test/publish?sessionId=SESenanhygrp");
Serial.println(sequence++);
}
void httpPut(char* url){
if (!client.connect()) {
Serial.println("EXCEPTION: during HTTP PUT. Could not connect");
return;
}
client.print("PUT");
client.print(" ");
client.print(url);
client.println(" HTTP/1.0");
client.println();
while(!client.available()){
delay(1);
}
while(client.available()) {
char c = client.read();
Serial.print(c);
}
while(client.connected()){
Serial.println("Waiting for server to disconnect");
}
client.stop();
}
त्रुटि निम्नलिखित खंड में होता है
if (!client.connect()) {
Serial.println("EXCEPTION: during HTTP PUT. Could not connect");
return;
}
उस बिंदु पर जब ग्राहक कनेक्ट करने में विफल रहता है, तो मैं दो चीजें करता हूं: (1) किसी भी सबूत के लिए सर्वर लॉग जांचें असफल कनेक्शन अनुरोध प्राप्त करने वाले सर्वर का; (2) सर्वर पर 'नेटस्टैट' का उपयोग यह सुनिश्चित करने के लिए करें कि पिछले कनेक्शन बंद कर दिए गए हैं या नहीं हैं। – NPE
उपरोक्त के अलावा, 3) मैं जांचता हूं कि स्टैक बह रहा है या नहीं। 4) क्या स्मृति मेमोरी है जो हजारों चक्रों के बाद होती है। – Jeff
सर्वर लॉग ने किसी भी समस्या का संकेत नहीं दिया है। Arduinos का उपयोग करते समय मेमोरी हमेशा एक समस्या है, लेकिन उपर्युक्त कोड काफी 'स्मृति सुरक्षित' होना चाहिए – ChrisSSocha