hilfe/infos zu einem "netzwerkprojekt"

matt

Erfahrenes Mitglied
hi leute,

ich hab jetzt schon ne weile eigenständig gesucht und bin auch schon die linkliste hier im forum (C/C++/C#) durchgegangen und nich fündig geworden.

und zwar suche ich ein paar hilfen bzw. infos. ich möchte ein client-serverprogramm schreiben, bräuchte dazu aber noch einige tutorials wie ich den ganzen netzwerkkram bewältige. haben das zwar in der schule schon mal angeschnitten, aber so richtig hängengeblieben is nich viel, nur ansatzweise ein paar dinge.

hat jemand so was von euch? wäre nett wenn ich ein paar links bekommen könnte, danke!
matt
 
sorry, war ne weile unabkömmlich und konnte hier nich reinschauen...

einfaches C/C++ wegen portierbarkeit windows/unix.

danke,
matt
 
Zuletzt bearbeitet:
hi leutz,

erstmal danke für den link zur socketprogrammierung. hat mir sehr weitergeholfen in meinem projekt. ich habe nun allerdings ein problem an der Stelle: http://www.zotteljedi.de/socket-tipps.html#connect

und zwar ist die definition der funktion connect() folgendermaßen:
Code:
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen );
kurz danach und ebenso im beispielcode wird das struct "sockaddr_in" verwendet, wobei mir nicht ganz klar ist, warum. wenn ich meinen code kompiliere, bekomme ich folgende fehlermeldung:
Code:
client.c:74: warning: passing arg 2 of `connect' from incompatible pointer type
folgendes ist übrigens ein kleiner ausschnitt aus meinem client-programm. ich denke, es ist bis auf das struct, wenn das überhaupt der fehler ist, alles richtig, aber ich kann mich auch irren. vielleicht fällt euch dazu etwas ein? könnt ihr mir vielleicht etwas helfen?
Code:
int connecthost(int *s, char *host, char *port) {
  struct sockaddr_in srv;

  (int)s = socket(AF_INET, SOCK_STREAM, 0);
  if ((int)s == -1) {
    perror("socket failed()");
    return -1;
  }

  srv.sin_addr.s_addr = inet_addr(host);
  srv.sin_port = htons( (unsigned short int) atol(port));
  srv.sin_family = AF_INET;

  if (connect((int)s, &srv, sizeof(srv)) == -1) {
    perror("connect failed()");
    return -2;
  }

  return 0;
}
[edit] ok, es sollte mit dem anderen struct gehen. aber es funzt trotzdem nich, also muss doch irgendwas fehlerhaft sein. nur was? [edit]

thx, matt
 
Zuletzt bearbeitet:
k, hab's nu :)

richtig sollte das so aussehen:
Code:
int connecthost(int *s, char *host, unsigned short int port) {
  struct sockaddr_in srv;

  *s = socket(AF_INET, SOCK_STREAM, 0);
  if (*s == -1) {
    perror("socket failed()");
    return -1;
  }

  srv.sin_addr.s_addr = inet_addr(host);
  srv.sin_port = htons(port);
  srv.sin_family = AF_INET;

  if (connect(*s, (struct sockaddr *)&srv, sizeof(srv)) == -1) {
    perror("connect failed()");
    return -2;
  }

  return 0;
}
matt
 
hi, ich bin's nochma :)

im moment programmiere ich jeweils den server und den client unter linux. allerdings sollte der client unter win laufen, da der rest unserer mitarbeiter entweder macos oder win verwenden und das programm für win gestaltet sein soll.

mein programm, dass ich nach dem tutorial programmiert habe, läuft allerdings nur unter linux, unter win gibt's ein paar fehlermeldungen und das programm wird logischerweise nicht kompiliert. ich kann leider grad die fehlermeldungen nicht posten, da mir hier die entsprechenden header-files fehlen. kann mir jemand schon im vorraus sagen, was ich ändern müsste bzw. was der unterschied zwischen der socket-programierung unter windows und linux ist?

wäre dafür sehr dankbar!

[edit] so, hab noch was gefunden, was sehr gut und besser erklärt ist als der vorige link. bestimmt auch gut für die linksammlung. [/edit]

matt
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück