Socket Error 10014

Gast #1444486
Lesenswert?

Hallo, hab ein seltsames Problem. Ich bekomme bei meinem Programm auf 
einem Rechner nach 2 Minuten (sind immer exakt 2 Minuten) den 
Socketfehler 10014. Auf einem anderen Rechner (beide xp) funktioniert 
das Programm aber. Weiss zufällig einer, was die Ursache sein könnte. 
"bad adress" sagt nämlich nicht wirklich viel aus. Der Fehler tritt in 
meiner recvfrom-Funktion auf. Nachfolgend ist der Quelltext aufgeführt. 
Danke schon mal


if (status==1)
{
   long byt = 
recvfrom(s,data,buf,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
   if(byt==SOCKET_ERROR)
    {
      static  char er[]="FAULT1";
      error=WSAGetLastError();
      return er;
    }
   else
    {
      data[byt]='\0';
      return data;
    }
}
else
{
    if (status==SOCKET_ERROR)
    {

    static  char xt[]="FAULT2";
    error=WSAGetLastError();
    return xt;
    }
    else
    {
    static  char xp[]="NODATA";
    return xp;
    }
}

}
#1444680
Lesenswert?

Bei der genauen Beschreibung und dem ausführlichen Quelltext ein 
Leichtes...

---

Passiert in den zwei Minuten etwas, also wird wirklich etwas
übertragen, oder schweigen sich die beiden Programme in der Zwischenzeit
an?

Es ist jeweils nur ein Rechner, auf dem Client und Server laufen?
Und wie sehen die Quelltexte aus (am besten auf ein sinnvolles Maß
reduziert, das den Fehler gerade noch zeigt)?
Gast #1444787
Lesenswert?

Danke erst ma für eure schnellen Anworten.
1. Server und Client laufen jeweils auf einem extra Rechner.
2. Firewall ist abgeschaltet
3. Daten werden bis zu den besagten 2 Minuten ständig 
übertragen(Polling).
4. Das Server-Programm läuft auf einem anderen NoteBook einwandfrei.
5. beide Rechner sind nur über ein Ethernetkabel verbunden. IP-Adressen 
fest vergeben. Mehr sind nicht im Netz.

Das Programm hört eben einfach nur auf nach 2 Minuten.
Gast #1445298
Lesenswert?

Hab jetzt ma wieder eine Vermutung. Mein Programm hat irgendwie ein 
Speicherleck. Kann es sein, wenn ich die recv-Funktion ständig aufrufe, 
dass der Buffer da nicht überschrieben wird ,sondern immer ein neuer 
Speicherbereich angelegt wird. Wäre sehr nett das zu wissen.
Gast #1445443
Lesenswert?

hab die Lösung. Das Problem war, dass ich für die empfangenen Daten pro 
Schleifendurchlauf jedesmal mit der Funktion malloc Speicherbereich 
reserviert habe -> viele Daten -> viel Speicherplatz. Ich dachte, dass 
das jedesmal überschrieben wurde. Dem ist nicht so - wieder etwas 
gelernt. Trotzdem danke für eure Hilfe.
#1445456
Lesenswert?

Gast schrieb:
> hab die Lösung. Das Problem war, dass ich für die empfangenen Daten pro
> Schleifendurchlauf jedesmal mit der Funktion malloc Speicherbereich
> reserviert habe

Und lass mich raten:
Kein Mensch hat den Returnwert von malloc daraufhin überprüft, ob ds ev. 
ein NULL Pointer ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren