Netzwerk Kommunikation

Antworten
Nachricht
Autor
gd12
Beiträge: 1
Registriert: 08. Nov 2008 15:45

Netzwerk Kommunikation

#1 Beitrag von gd12 » 08. Nov 2008 22:16

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: Alles auswählen

#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 &#123;
  struct sockaddr_in sin;
  unsigned int sinlen;
  int bindflag;
  int sd;
&#125; SOCKET;


int sclient&#40;SOCKET *sp, char *name, int port&#41;
&#123;
  struct hostent *hostent;
  struct in_addr addr;

  addr.s_addr = inet_addr&#40;"192.168.1.1"&#41;;
  
if&#40;&#40;hostent=gethostbyaddr&#40;&#40;char*&#41;&addr, sizeof&#40;addr&#41;, AF_INET&#41;&#41;==0&#41;
&#123;
	return -2;	
&#125;
  //if  &#40;&#40;hostent=gethostbyaddr&#40;&#40;char*&#41;&addr, sizeof&#40;addr&#41;, AF_INET&#41;&#41;==0&#41;
  //  return -1;



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

    return -1;
  &#125;

  return sp->sd;
&#125;



int main&#40;void&#41;
&#123;
  printf&#40;"hello"&#41;;
  SOCKET socket1;
  char host&#91;&#93; = "EiMi";
  
  int a=sclient&#40;&socket1,host,8000&#41;;
  cout<<a;
  

  
  return 0;
&#125;

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 09. Nov 2008 10:27

Wo ist der Aufruf von socket()?

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten