Problema WiFi shield : errore nella connect

che non è un valore standard, quindi si presuppone che tu abbia un programma ad-hoc in ascolto sulla porta 3000 del tuo pc

Come faccio dall'arduino a mandare un semplice ping al server sulla 3000? cosi intanto vedo se il server è raggiungibile dall arduino..

i ping non sono su una porta, ma vanno verso un ip.

per fare un test apri dal terminale di un pc "telnet ip porta" e vedi se così ti colleghi.

Ma cosa ti aspetti di avere sulla porta 3000?

Sulla 3000 ho gia un server in ascolto, un server.coffee che funziona correttamente; perchè è stato gia testato con un client.coffee ...

Per quanto riguarda telnet

marco@marco-Aspire-5740:~$ telnet 10.26.144.37 3000
Trying 10.26.144.37...
Connected to 10.26.144.37.
Escape character is '^]'.

però dovresti provare da u naltro pc in rete interna, per verificare se sono i firewall di windows/router che danno problemi

No, non credo sia problema di firewall, perchè all'interno della rete riesco a raggiungere il mio computer facendo un ping da un altro pc...
Il problema secondo me è nella libreria, ovvero SocketIOClient.h ; sono andato a vedere la definizione della funzione "connect(hostname,port) ",

ed è fatta cosi :

bool SocketIOClient::connect(char thehostname[], int theport) {
if (!client.connect(thehostname, theport)) return false;
hostname = thehostname;
port = theport;
sendHandshake(hostname);
return readHandshake();
}

il problema è quell' realHandshake() che non so che cosa faccia; e mi risulta FALSE..

il fatto che tu PINGHI non vuol dire che le porte siano aperte.
Il ping spesso NON è filtrato dai firewall, mentre, al contrario, i firewall bloccano le porte. Win 7 (ma forse anche vista) in poi hanno un fw intgrato.

Qundi:

  1. pinga da remoto, se KO c'è un problema di connessione;
  2. telnetta da remoto, se KO c'è un problmea di firewall/nat/configurazione del server

Ho capito, sei stato chiaro..
comunque, facendo le ultime prove adesso, vedo che il mio arduino si connette alla rete locale;
mi stampa l'ip dell'arduino;
ma quando va a fare la connect ovviamente si blocca, e il server non stampa niente sulla console...
Non so neanche dove cercare l'errore, se nel server, anche se credo di no, oppure nella definizione della connect, nel SocketIOCLient.cpp

prima di tutto verifica da un altro PC, POI passi all'arduino.
Devi essere straceto che non ci siano problemi nella lan

zio90:
@Pitusso: si, sto usando la 1.05 e non ho mai aggiornato il firmware; domani mattina ho a disposizione la shield quindi provo ad utilizzare la 1.04 oppure ad aggiornare il firmware....

hai fatto? anche io avevo quel problema sul connect ma dopo che ho aggiornato ho risolto

Adesso aggiorno il firmware poi vi dico...
Comunque sono CERTO che nella lan non ci siano problemi, da un altro pc funziona tutto.. il server è raggiungibile e non ci sono intoppi...

zio90:
Adesso aggiorno il firmware poi vi dico...
Comunque sono CERTO che nella lan non ci siano problemi, da un altro pc funziona tutto.. il server è raggiungibile e non ci sono intoppi...

eheh se non l'hai ancora fatto è quello che ti causa problemi, anche io senza fare l'aggiornamento non mi connettevo da nessuna parte

non ti connetevi da nessuna parte oppure comunque riuscivi a fare qualcosa? io riesco ad ottenere l'ip dal dhcp eh... mi connetto alla rete...
comunque si, l aggiornamento devo farlo lo stesso

zio90:
non ti connetevi da nessuna parte oppure comunque riuscivi a fare qualcosa? io riesco ad ottenere l'ip dal dhcp eh... mi connetto alla rete...
comunque si, l aggiornamento devo farlo lo stesso

si l'ip ce l'avevo, ma mi falliva sistematicamente l' if (client.connect(server, 80))

Ah, ok, come da me.... aggiorno il firmware e poi vi faccio subito sapere le novita';
vi ringrazio tutti per l'aiuto..!

zio90:
Ah, ok, come da me.... aggiorno il firmware e poi vi faccio subito sapere le novita';
vi ringrazio tutti per l'aiuto..!

di niente :slight_smile:
segui questa guida: http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading
se sei su windows devi scarivarti anche i driver...

poi siccome ho notato che ne sai più di me riguardo questi argomenti magari passa per questo topic e guarda se puoi darmi qualche aiuto: Domande da principiante per iniziare ad usare WiFi/Ethernet shield - Software - Arduino Forum :wink:
grazie
ciao

Allora,

-ho aggiornato il firmware della WiFi shield,
-ho scritto bene lo sketch di Arduino, che vi posto qui sotto;
-lancio il mio server sulla porta 3000

Ma purtroppo lo sketch mi si blocca sempre nella connect(hostname,porta);
E il mio server non stampa a video niente, nè tentativi di connessione nè altro..

#include "SocketIOClient.h"
#include "Ethernet.h"
#include "SPI.h"
#include "WiFi.h"


SocketIOClient client;

char ssid[] = "CENTEC"; 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char hostname[] = "10.26.145.78";
int port = 3000;
int status= WL_IDLE_STATUS;   

void ondata(SocketIOClient client, char *data) {
  Serial.print(data);
}

void setup() {
  Serial.begin(9600);
     
  Serial.println("Attempting to connect to the network...");
 
 status = WiFi.begin(ssid);

  if ( status != WL_CONNECTED) {
        Serial.println("Couldn't get a wifi connection");
         while(true);

  }
 else if(status == WL_CONNECTED){
        Serial.println("Connected to wifi");
        IPAddress ip;
        ip = WiFi.localIP();
        Serial.println(ip);
   
 Serial.println("\nConnessione al server ..\n");
    
    client.setDataArrivedDelegate(ondata);
    
   if (!client.connect(hostname,3000)) {
      Serial.println("Not connected.");
    }
    if (client.connected()) {
      Serial.println("Client here!");
    }
    else if(!client.connected()) {
      Serial.println("errore connessione");
    }    
  }
}

void loop() 
{
   client.monitor(); 
}

controlla che l'ip impostato sia valido, ho visto delle bug request al proposito

Si credo sia valido, ho provato a fare un ping dal pc verso arduino e mi dice:

marco@marco-Aspire-5740:~$ ping 10.26.145.80
PING 10.26.145.80 (10.26.145.80) 56(84) bytes of data.
64 bytes from 10.26.145.80: icmp_req=1 ttl=255 time=83.1 ms
64 bytes from 10.26.145.80: icmp_req=2 ttl=255 time=103 ms
64 bytes from 10.26.145.80: icmp_req=3 ttl=255 time=123 ms
64 bytes from 10.26.145.80: icmp_req=4 ttl=255 time=167 ms
64 bytes from 10.26.145.80: icmp_req=5 ttl=255 time=89.5 ms
^C
--- 10.26.145.80 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 83.189/113.478/167.586/30.442 ms

no, il problmea è che la libreria gestisce in modo errato gli IP.