Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Netzwerk Kommunikation

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
gd12



Anmeldungsdatum: 08.11.2008
Beiträge: 1

BeitragVerfasst am: 08. Nov 2008 22:16   Titel: Netzwerk Kommunikation

Im Unterricht programmieren wir ein Poker-Spiel.
Ich sollte nun das clientseitige Protokoll schreiben. Der folgende Code soll eine Verbindung zum Server (Host: EiMi, Port: 8000) herstellen.
Da keine Verbindung zustande kommt, ist die Frage, ob das Ganze richtig implementiert ist? Kann der fehlerhafte Verbindungsaufbau auch daher kommen, dass mein Programm unter Linux läuft und das serverseitige unter Windows?

Code:

#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <syslog.h>
#include <sys/time.h>


#include <arpa/inet.h>


#include <errno.h>
#include <string.h>
#include <iostream>
using namespace std;



typedef struct {
  struct sockaddr_in sin;
  unsigned int sinlen;
  int bindflag;
  int sd;
} SOCKET;


int sclient(SOCKET *sp, char *name, int port)
{
  struct hostent *hostent;
  struct in_addr addr;

  addr.s_addr = inet_addr("192.168.1.1");
 
if((hostent=gethostbyaddr((char*)&addr, sizeof(addr), AF_INET))==0)
{
   return -2;   
}
  //if  ((hostent=gethostbyaddr((char*)&addr, sizeof(addr), AF_INET))==0)
  //  return -1;



  sp->sin.sin_family=(short)hostent->h_addrtype;
  sp->sin.sin_port=htons((unsigned short)port);
  sp->sin.sin_addr.s_addr=*(unsigned long *)hostent->h_addr;
  //connect()
  if  ((connect(sp->sd,(struct sockaddr *)&sp->sin, sp->sinlen))==-1){
    syslog(LOG_INFO,"client-socket: cannot connect to: %s at %d",name,port);

    return -1;
  }

  return sp->sd;
}



int main(void)
{
  printf("hello");
  SOCKET socket1;
  char host[] = "EiMi";
 
  int a=sclient(&socket1,host,8000);
  cout<<a;
 

 
  return 0;
}
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 09. Nov 2008 10:27   Titel:

Wo ist der Aufruf von socket()?

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy