Probleme fonction (client.connect(server, port)

Bonjour,
J'ai récupéré un programme avec l'utilisation d'un shield Ethernet.
Une partie du programme me pose problème parce que je n'arrive pas a rentrer dans une des fonctions.

void hello(EthernetClient client){
  if (client.connect(serverTarget, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /hello HTTP/1.1");
    client.println("Host: 192.168.0.100");
    client.println("Connection: close");
    client.println();
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed from Hello");
  }
}

J'utilise HerculeHTTP comme client. J'envoie une info avec Hercule en mettant comme port "80" et la même IP mais ca ne rentre que dans le else. Voyez vous comment je pourrai y rentrer dans le if?

Merci de votre aide.

et si vous écrivez la signature de la fonction comme cela, est-ce que c'est mieux?

void hello(EthernetClient [color=red]&[/color]client)
{
  ...

Ca ne change rien, il ne rentre pas dans le if

essayez de mettre le code dans le setup juste pour voir

sinon vous avez peut-être un soucis réseau alors... votre shield reçoit bien un adresse IP etc?

faudrait voir tout votre code..

Voila le code. Via mon application client j'envoie un 1 et j'arrive a lire la donnée. Le problème est que juste la fonction readData fonctionne.
Merci de votre aide.

#include <SPI.h>       //librairie pour synchroniser la communication
#include <Ethernet.h> 

// configuration réseau 
byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x8B, 0x19};   //adresse mac physique
byte ip[] = {192, 168, 0, 100};                      // IP dans le LAN
byte gateway[] = {192, 168, 0, 1};                   // DG
byte subnet[] = {255, 255, 255, 0};                  //mask de sous-réseau
EthernetServer server(80);                           //port du serveur (HTTP port 80)


// Server IP Target
char serverTarget[] = "192.168.00.100"; 


const int CapteurSortie=9;
const int CommandeOuverture=3;
int FM=0;  //bit pour détecter un front montant

// données reçues par le GET HTTP Protocol 
char licencee_plate_status_validation; 
// si les données reçues = 0 => la plaque n'est pas acceptée 
// si les données reçues = 1 =>  la plaque est acceptée

void setup()
{
  Serial.begin(9600);

  pinMode(CapteurSortie,INPUT);
  pinMode(CommandeOuverture,OUTPUT);


  //démarre la connection Ethernet et le serveur
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.print("l'adresse IP du serveur est: ");
  Serial.println(Ethernet.localIP());
}

void loop()
{
  EthernetClient client = server.available();

  // Hello from arduino => check if Arduino is alive 
  hello(client); 
  // Check if a car goin out 
  checkExitSensor(client);
  if (client)  //si un client est connecté
  {
    if(client.connected())           // Tant que le client est connecté
    {
      if(client.available())         // A-t-il des choses à dire ?
      {
        readDataFromClient(client); 
      }
    }
  }  
  delay(10);
}

// ================================= METHODES 

void readDataFromClient(EthernetClient client){

  // send HTTP header to client : 
  client.println(F("HTTP/1.1 200 OK"));
  client.println(F("Content-Type: text/html"));
  client.println();

  // Read GET CALL for know Status of licence plate 
  for (int i = 0; i < 6; i++) {
    if (i == 5) {
      licencee_plate_status_validation = client.read();
      Serial.println(licencee_plate_status_validation); 
      openParking(licencee_plate_status_validation); 
    } 
    else {
      client.read();
    }
  }
  client.stop();
}

void openParking(char licencee_plate_status_validation)
{
  if (licencee_plate_status_validation == '1')
  {      
    Serial.println("oepnParking true  : " );
    Serial.println(licencee_plate_status_validation);    
    //on ouvre la barrière pour faire entrer la voiture
    digitalWrite(CommandeOuverture,HIGH);
    delay(1500);
    digitalWrite(CommandeOuverture,LOW);
  }
}

void checkExitSensor(EthernetClient client)
{
  if(CapteurSortie==HIGH)
  {

    exitRequest(client);

    if(FM==0)
    {
      // CONTACT CLIENT by HTTP GET method  
      exitRequest(client);

      //on ouvre la barrière pour faire sortir la voiture
      digitalWrite(CommandeOuverture,HIGH);
      delay(1500);
      digitalWrite(CommandeOuverture,LOW);
      FM=1;
    }
  }
  else //donc si CapteurSortie =LOW
  {
    FM=0;
  }
}


void exitRequest(EthernetClient client){
  if (client.connect(serverTarget, 3000)) {
    // Make a HTTP request:
    client.println("GET /carDetected HTTP/1.1");
    client.println("Host: 192.168.0.100");
    client.println("Connection: close");
    client.println();
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed from exit Request");
  }
}


void hello(EthernetClient client){
  if (client.connect(serverTarget, 3000)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /hello HTTP/1.1");
    client.println("Host: 192.168.0.100");
    client.println("Connection: close");
    client.println();
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed from Hello");
  }
}

Définissez votre client en variable globale et ne le passez pas en paramètre à vos fonctions (surtout en copie, faites au moins des références), utilisez la variable globale -

Pourquoi votre IP locale est la même que le server target?

J'ai du mal a comprendre le code justement. Je ne voix pas trop comment valider la condition "if (client.connect(serverTarget, 3000))" J'utilise hercule pour simuler "le serverTarget" et j'envoie des infos mais rien ne se passe dans cette fonction