Fatal Error
Lt. Junior Grade
- Registriert
- Jan. 2009
- Beiträge
- 294
Hallo Leute,
ich versuche gerade ein Programm in C zu schreiben. Ich habe das erste mal mit C-Sockets zu tun, also glaub ich, dass dieses Problem existiert weil ich einfach keine Ahnung von C habe xD. Prinzipiell ist es ein Client der sich mit dem zugehörigen Server verbindet und Daten über ein eigenes Protokoll austauscht.
Es gibt für diesen Server schon einen Java-Client. Diese Kombination funktioniert auch super. Jetzt wollte ich den Client dazu in C nachbauen.
Die Verbindung funktioniert per TCP. Den Server lasse ich in einer VM laufen (Ubuntu) und der Client läuft auf meinem Macbook. Ich verwende auch nichts anderes als POSIX.
Ich habe jetzt das Problem, dass mein Client ca 5 mal hintereinander funktioniert, und dann liefert eine der read-Methoden einen Fehler. Im Wireshark sehe ich aber, dass der Server seine Daten korrekt überträgt. Ich hab auch schon sowas wie setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &true, sizeof(int)) und setsockopt(sock, SOL_SOCKET, TCP_NODELAY, (char *)&flag, sizeof(int)) probiert, aber immer wieder das gleiche. Es passiert auch nicht immer beim selben read.
Nach ein paar Minuten gehts wieder einmal kurz.
Habt ihr eine Idee was das sein könnte?
Eventuell, dass der Server die Verbindung aus irgendeinem Grund schließt und ich deshalb am Client nichts mehr bekomme?
Es wird wahrscheinlich irgendwas mit TCP zu tun haben was ich übersehe.
Wahrscheinlich ist es irgendein Anfängerproblem, aber auch nach langem Suchen komme ich auf keine Antwort...
Falls jemand nach Sourcecode fragt...es ist wirklich nichts besonderes. Es wird abwechselnd read und write aufgerufen. Da müsste auch alles stimmen, weil wenn es mal funktioniert dann funktioniert das alles.
Danke schonmal für eure Ratschläge.
Edit:
strerror(errno) gibt folgendes aus im Fehlerfall: "Resource temporarily unavailable"
Manchmal kommt aber auch "Undefined error: 0"
Vielleicht hilft das schonmal, ich such auch weiter.
ich versuche gerade ein Programm in C zu schreiben. Ich habe das erste mal mit C-Sockets zu tun, also glaub ich, dass dieses Problem existiert weil ich einfach keine Ahnung von C habe xD. Prinzipiell ist es ein Client der sich mit dem zugehörigen Server verbindet und Daten über ein eigenes Protokoll austauscht.
Es gibt für diesen Server schon einen Java-Client. Diese Kombination funktioniert auch super. Jetzt wollte ich den Client dazu in C nachbauen.
Die Verbindung funktioniert per TCP. Den Server lasse ich in einer VM laufen (Ubuntu) und der Client läuft auf meinem Macbook. Ich verwende auch nichts anderes als POSIX.
Ich habe jetzt das Problem, dass mein Client ca 5 mal hintereinander funktioniert, und dann liefert eine der read-Methoden einen Fehler. Im Wireshark sehe ich aber, dass der Server seine Daten korrekt überträgt. Ich hab auch schon sowas wie setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &true, sizeof(int)) und setsockopt(sock, SOL_SOCKET, TCP_NODELAY, (char *)&flag, sizeof(int)) probiert, aber immer wieder das gleiche. Es passiert auch nicht immer beim selben read.
Nach ein paar Minuten gehts wieder einmal kurz.
Habt ihr eine Idee was das sein könnte?
Eventuell, dass der Server die Verbindung aus irgendeinem Grund schließt und ich deshalb am Client nichts mehr bekomme?
Es wird wahrscheinlich irgendwas mit TCP zu tun haben was ich übersehe.
Wahrscheinlich ist es irgendein Anfängerproblem, aber auch nach langem Suchen komme ich auf keine Antwort...
Falls jemand nach Sourcecode fragt...es ist wirklich nichts besonderes. Es wird abwechselnd read und write aufgerufen. Da müsste auch alles stimmen, weil wenn es mal funktioniert dann funktioniert das alles.
Danke schonmal für eure Ratschläge.
Edit:
strerror(errno) gibt folgendes aus im Fehlerfall: "Resource temporarily unavailable"
Manchmal kommt aber auch "Undefined error: 0"
Vielleicht hilft das schonmal, ich such auch weiter.
Zuletzt bearbeitet: