PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pointer error



blackpearl
09-12-2004, 08:44
Hallo,

Ich habe hier mal nen Source, allerdings hab ich damit meine Probleme, denn der Compiler gibt mit folgenden Fehler zurück:

server.c: In function `main':
server.c:46: warning: passing arg 2 of `bind' from incompatible pointer type
server.c:72: warning: passing arg 2 of `accept' from incompatible pointer type
server.c:95:10: warning: no newline at end of file



Zeile 46: if (b = bind(sock, &server, sizeof(server)) == -1)

Boron
09-12-2004, 08:59
Es sind nur Warnungen und keine Fehler :).

Die dritte Warnung einfach durch eine Leerzeile am Dateiende beheben :).

Die zweite Warnung hat die selbe Ursache wie die erste Warnung.

Jetzt zur ersten Warnung:
Da kann ich http://www.zotteljedi.de/doc/socket-tipps/index.html absolut empfehlen!

blackpearl
09-12-2004, 15:25
dankeschön,

nun hab ich aber folgendes problem mit dem client:


cc client.c -o client
client.c:5:2: invalid preprocessing directive #inlcude
client.c: In function `main':
client.c:41: warning: passing arg 2 of `connect' from incompatible pointer type
client.c:60:2: warning: no newline at end of file
make: *** [client] Fehler 1


und hier ist mal der gesamte source:


#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdlib.h>
#inlcude <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>

#define BUFFER_SIZE 8024

int main(int argc,char* argv[])
{

char buffer[BUFFER_SIZE];
char tempo[8024];
int dub;
int bytes;
int sock, a, b;
struct sockaddr_in server;
dub = 0;

if(argc != 3)
{
perror("\nSYNTAX: client <host-ip> <port>\n");
exit(1);
}

server.sin_addr.s_addr = inet_addr(argv[1]); //IP des Servers

server.sin_port = htons((unsigned short int)atol(argv[2])); //Port zu dem ein connect gemacht werden soll
server.sin_family = AF_INET;

sock = socket(AF_INET,SOCK_STREAM,0);

if(sock == -1)
{
perror("\n//SOCKET FAILED");
exit(0);
}

if(connect(sock,&server, sizeof(server)) == -1) //das connecten
{
perror("\nCONNECT FAILED");
exit(0);
}

bytes = recv(sock,buffer,sizeof(buffer),0);
b = 0;
a = 0;

if(bytes == -1)
{
perror("\nRECV FAILED");
exit(1);
}

printf("\n%s\n",buffer);

return(0);
}

Boron
09-12-2004, 16:42
Simpler Schreibfehler:
client.c:5:2: invalid preprocessing directive #inlcude

Fällt dir da was auf :)?

peschmae
10-12-2004, 10:00
Solche Fehler gibts also tatsächlich :D
Hatte eben nen Test wo in nem C-Programm #include <studio.h> war und eine whyle-Schleife. Ich durfte die Fehler suchen und hab mir über die Praxisrelevanz gedanken gemacht ;)

MfG Peschmä

Boron
10-12-2004, 10:30
Es ist echt unglaublich was das menschliche Gehirn korrigiert, obwohl wir den Fehler sehen.
Beim studio.h musste ich 3x schauen, bis ich es sah :).

locus vivendi
10-12-2004, 12:25
Es is ebenso unglaublich was man alles herausfindet wenn man z.B. mal "man 2 socket" und "man 2 connect" eingibt wenn der Compiler einen schon mit der Nase drauf stößt...