000
29.05.2006, 17:27 Uhr
-Biohazard-
|
Hallo Leute, ich habe das Problem, dass wenn ich mein eigenes Serverprogramm (das Nachrichten sendet) beende, dass das Clientprogramm (welches Nachrichten empfängt) in einer Endlosschleife hin die selbe Nachricht anzeigt. Ich würde nun gerne wissen, wie das Clientprogramm prüfen kann, ob das Server programm noch läuft oder nicht. Hier der Code:
Code: |
#include <iostream> #include <winsock.h> #include <windows.h> #define PORT 12345 #define IP "127.0.0.1" #define RCVBUFSIZE 1024 using namespace std;
int main( int argc, char * * argv ) { struct sockaddr_in server; struct hostent * host_info; unsigned long addr; SOCKET sock; char charwar[RCVBUFSIZE]; WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 1, 1 ); if ( WSAStartup( wVersionRequested, & wsaData ) == 0 ) { cout << "Winsock:\tinitialisiert" << endl; } sock = socket( AF_INET, SOCK_STREAM, 0 ); memset( & server, 0, sizeof( server ) ); if ( ( addr = inet_addr( argv[1] ) ) != INADDR_NONE ) { memcpy( ( char * ) & server.sin_addr, & addr, sizeof( addr ) ); } else { host_info = gethostbyname( IP ); if ( NULL == host_info ) { cout << "Unbekannter Server!" << endl; Sleep( 5000 ); return -1; } memcpy( ( char * ) & server.sin_addr, host_info->h_addr, host_info->h_length ); } server.sin_family = AF_INET; server.sin_port = htons( PORT ); while ( connect( sock, ( struct sockaddr * ) & server, sizeof( server ) ) < 0 ) { cout << "Keine Verbindung möglich.." << endl; Sleep(500); } cout << "Verbindung:\tOK" << endl; cout << "Serveradresse:\t" << inet_ntoa( server.sin_addr ) << endl << endl; while ( 1 ) { cout << "Nachricht:\t"; recv( sock, charwar, RCVBUFSIZE, 0 ); cout << charwar << endl; } }
|
Kann man dies anhand des Sockets sehen?
Danke, -Biohazard- --
|