Socket status
lima-city → Forum → Programmiersprachen → C/C++ und D
abfrage
art
boxen
code
datum
ermitteln
erstellen
glauben
krieg
mache
message
problem
schau
senden
server
status
system
url
verbinden
wissen
-
Wie kann ich rausfinden in welchem status sich mein socket befindet? ob er verbunden ist oder ob der andere ihn schon geschlossen hat, und z.B. wenn der socket sich schliesst gleich ne message box mit "Socket closed" oder so... es muss doch irgend nen weg geben das zu machen, hab schon gegoogelt nach socket status ermitteln, allerdings nichts gefunden... ich will einfach ne art abfrage "if (socket == connected), oder sowas in der art haben ;/ und ich will auch noch machen das sobald mein socket irgendwie geschlossen wird eine message box angezeigt wird... das problem ist nur, wie mach ich das?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Schau mal hier:
s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { perror("socket failed()"); ..... } srv.sin_addr.s_addr = inet_addr(argv[1]); srv.sin_port = htons( (unsigned short int) atol(argv[2])); srv.sin_family = AF_INET; if (connect(s, &srv, sizeof(srv)) == -1) { perror("connect failed()"); ... }
Ich glaube so sollte es gehen. socket gibt immer nur eine art "id" auf den Stream im System zurück. -1 bedeutet dann immer das keiner zugewiesen wurde. -
thx, werde mal damit rumexperimentieren, einen timer der die ganze zeit die ID abcheckt und nebenbei öffne ich/schliesse ich das socket vom client aus und nebendran seh ich dann die id... nimmt mich wunder ob sich was ergibt ^^
-
du brauchst sie nicht die ganze Zeit abchecken nur beim erstellen des sockets und beim verbinden musst du checken, sonst nicht.
Schau mal hier:
http://www.pc-adviser.de/socket_programmierung.html#client
-
normaler Weise wenn du Daten sendest oder empfängst. ( read() , write() ) dann wird auch ein -1 zurück gegeben und du kriegst den error per perror().
Beitrag zuletzt geändert: 13.2.2009 17:39:17 von go2sh -
komisch, das socket ist connected, aber wenn ich einen thread mit
while(1)
{
Sleep(10);
if (bConnected == TRUE) {
rc = recv...
if (rc==SOCKET_ERROR) {
MessageBox
}
}
}
mache, gibts mir IMMER socket error, und ich kriege jede 10ms ne message box, allerdings kann ich immer noch daten senden mit nem anderen thread und die kommen beim server an.... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage