komischer compile error mit geschweiften Klammern
-
Also, der Compile Error ist verdammt komisch. Ich hab keine Ahnung, wo das herkommt, beim umschreiben tauchte der auf einmal auf
Ich bin echt ratlos und hab auch schon in irc's gefragt.
Compiler:$ gcc main.c sockets.c main.c: In function ‘sendcommand’: main.c:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.h:33: error: old-style parameter declarations in prototyped function definition main.c:52: error: expected ‘{’ at end of input sockets.c: In function ‘sendcommand’: sockets.c:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.c:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.c:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.c:65: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token sockets.h:33: error: old-style parameter declarations in prototyped function definition sockets.c:70: error: expected ‘{’ at end of input
main.c
#include "sockets.h" int main() { struct hostent *host_info = NULL; struct sockaddr_in server, client; char *recvbuf; char *buffer; int sock; int len; int fd; time_t t; unsigned long exittime; unsigned long addr; sock = socket( AF_INET, SOCK_STREAM, 0 ); if ( sock < 0) err0r("Fehler bei socket()"); memset( &server, 0, sizeof (server)); server.sin_family = AF_INET; /* INADDR_ANY take every IP */ server.sin_addr.s_addr = htonl(INADDR_ANY); /* Portnumber */ server.sin_port = htons(LISTENPORT); /* Bind port */ if(bind(sock,(struct sockaddr*)&server, sizeof( server)) < 0) err0r("Kann das Socket nicht \"binden\""); /* Teile dem Socket mit, dass Verbindungswünsche * von Clients entgegengenommen werden */ if(listen(sock, MAXCONNECTIONS) == -1 ) err0r("Fehler bei listen"); printf("Server bereit – wartet auf Anfragen ...\n"); /* Bearbeite die Verbindungswünsche von Clients * in einer Endlosschleife * Der Aufruf von accept() blockiert solange, * bis ein Client Verbindung aufnimmt */ for (;;) { len = sizeof(client); fd = accept(sock, (struct sockaddr*)&client, &len); time(&t); if (fd < 0) err0r("Fehler bei accept"); recvbuf = recvtobuf(fd); printf("%s: %s\n", inet_ntoa(client.sin_addr),recvbuf); if((checkbuf(recvbuf)) == 1) { sendcommand("w000h000000000000\n", fd); } else { sendcommand("FAIL\n", fd); } close(fd); } return EXIT_SUCCESS; }
sockets.h
#ifndef SOCKETS_H #define SOCKETS_H #endif /*for standard funcs*/ #include <stdio.h> #include <stdlib.h> /*void err0r(errno)*/ #include <errno.h> /*for sockets*/ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> /*for select()*/ #include <sys/select.h> /*memcpy*/ #include <string.h> /*Receive message for log*/ #include <time.h> /* Defines */ #define LISTENPORT 2222 #define HWIDDATA "/dir/with/read/rights" #define SERIALDATA "/dir/with/next/read" #define CONFIG "datas.conf" #define MAXCONNECTIONS 5 int checkbuf(char *buf); char *filetobuf(char *filename); char *recvtobuf(int sock); int initsock(int Port); void sendcommand(char *command, int sock) void err0r(char *Message); void log(int fail, char *Message);
sockets.c
#include "sockets.h" void err0r(char *Message) { fprintf(stderr, "%s: %s\n", Message, strerror(errno)); exit(EXIT_FAILURE); } int checkbuf(char *buf) { printf("%s",buf); if((strcmp(buf, "hai\n")) == 0) { return 1; } else { return -1; } } char *recvtobuf(int sock) { char *bufpointer; char recvbuf[1024]; char buf[1048576]; int n; memset(buf, 0, sizeof(buf)); bufpointer = buf; while (((n = recv(sock, buf, sizeof(recvbuf), 0) ) > 0) && (sizeof(buf) < 1047552) ) { buf[n] = '\0'; if(strncpy (buf , recvbuf , sizeof(recvbuf))) { err0r("strncpy"); } } return bufpointer; } char *filetobuf(char *filename) { FILE *File; long sizeoffile; char *buffer; size_t result; /* add the b sets your file mode, if it is binary or ascii. */ File = fopen (filename , "r" ); if (File==NULL) { err0r("File error: "); } fseek (File , 0 , SEEK_END); /* tell me the file size */ sizeoffile = ftell (File); rewind (File); /* allocating the mem for the file */ buffer = (char*) malloc (sizeof(char)*sizeoffile); if (buffer == NULL) { err0r("Cannot allocate memory error: "); } /* Copyfile to buf */ result = fread (buffer,1,sizeoffile,File); if (result != sizeoffile) { err0r("File error: "); } /* and now let the server know, what the file includesn */ fclose (File); remove(filename); return buffer; } void sendcommand(char *command, int sock) { int len; len = strlen(command); if (send(sock, command, len, 0) != len) err0r("Mehr bytes versendet, als erwartet"); }
Hilfe, ich hab echt keine Ahnung, wo das Problem liegt. Das ist immo ein simpler server, der später Daten verarbeiten soll, die am socket ankommen. Ich hoffe, der Code ist soweit übersichtlich, kommentiert hab ich nicht recht viel. Aber naja, das is wahrscheinlich wieder irgendsoein kleiner drecks Fehler, aber naja, schaut ihr mal bitte bitte drüber.
Edit: grad hat doch jemand im irc den Fehler gefunden
Es war nur ein kleiner Strichpunkt, der in der sockets.h nach sendcommand() gefehlt hat.
-
; vergessen. Außerdem ist der Includeguard falsch (überleg mal wo das #endif hinkommt)