Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Serveraktivität prüfen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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-
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.05.2006, 17:32 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wie wärs wenn du mal bei recv auf nen Fehler prüfst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.05.2006, 21:07 Uhr
-Biohazard-



Danke
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: