Gå til innhold

Årsak til mange feilmeldinger?


Anbefalte innlegg

Har sett meg blind på koden og trenger hjelp til å finne årsaken til feilmeldingene.

 

/*******************************************************************************
*Filname :fserver.c

*Made by : Ørjan Pettersen

*Assingment number  :

   DATE     VERSION    BY      CHANGE

=======================================================================
Short description :


*******************************************************************************/

// includes.
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
   #include <unistd.h>
   #include <errno.h>
   #include <string.h>
   #include <arpa/inet.h>
   #include <sys/wait.h>
   #include <signal.h>

#define SERV_TCP_PORT 15151
#define SERV_UDP_PORT 14141
#define BUF_SIZE 4000
#define BACKLOG = 10

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

//main                               //linje 40
int main(void) {
int sockfd, newfd, filefd, buffill;
char buf[BUF_SIZE];
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int addrlen = sizeof(struct sockaddr_in);
int numBytes;

//TCP socket style
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {         //linje 50
 perror("Socket() call failed");
 exit(EXIT_FAILURE);
}

my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = INADDR_ANY;
my_addr.sin_port = htons(SERV_TCP_PORT);
memset(&(my_addr.sin_zero), '\0', 8);

//Bind a name to a socket.                                   //linje 60
if(bind(sockfd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) == -1) {
 perror("Bind() call failed");
 exit(EXIT_FAILURE);
}

//Listen for a connection
if(listen(sockfd, BACKLOG) == -1) {
 perror("listen failed");
 exit(EXIT_FAILURE);
}                           //linje 70

while(1) {
 //Accept connection
 if((newfd = accept(sockfd, (struct sockadr *) &their_addr, &addrlen)) == -1) {
 	perror("accept call failed");
 	exit(EXIT_FAILURE);
 }
 
 printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));
                            //linje 80
 while(addrlen != 0) {
 	numBytes = recv(newfd, buf, BUF_SIZE-1, 0);
 	buf[numBytes] = '\0';
 	printf("RECV: %s", buf);
 }
}

close(sockfd); close(newfd);
return 0;
}                          //linje 90

 

feilmeldinger ved kompilering

 

[orjanp@ArchThinkpad div]$ gcc -o fserver fserver.c
fserver.c: In function `main':
fserver.c:67: error: parse error before '=' token
fserver.c: At top level:
fserver.c:72: error: parse error before "while"
fserver.c:76: error: parse error before numeric constant
fserver.c:76: error: conflicting types for 'exit'
fserver.c:76: error: conflicting types for 'exit'
fserver.c:76: warning: data definition has no type or storage class
fserver.c:79: error: parse error before string constant
fserver.c:83: error: `numBytes' undeclared here (not in a function)
fserver.c:83: warning: data definition has no type or storage class
fserver.c:84: error: parse error before string constant
fserver.c:84: error: conflicting types for 'printf'
fserver.c:84: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
fserver.c:84: error: conflicting types for 'printf'
fserver.c:84: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
fserver.c:84: warning: data definition has no type or storage class
fserver.c:88: warning: parameter names (without types) in function declaration
fserver.c:88: warning: data definition has no type or storage class
fserver.c:88: warning: parameter names (without types) in function declaration
fserver.c:88: warning: data definition has no type or storage class
fserver.c:89: error: parse error before "return"
fserver.c:83: error: storage size of `buf' isn't known

 

Noen som kan hjelpe?

Endret av Orjanp
Lenke til kommentar
Videoannonse
Annonse

Dette er noe av grunnen til at man bør bruke const fremfor macroer og defines. Med en brukende kompiler gir det deg 0 tap uansett.

 

Edit:

#include <iostream>

using namespace std;


int main ()
{
       #define BACKLOG = 10
       int i BACKLOG;
       cout << i << endl;


       return(0);
} // main

 

..artig.. :]

 

Edit2:

Mange feilmeldinger er ofte følgefeil btw.

Endret av søppel
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...