Erreur dans code client-serveur - C - Programmation
Marsh Posté le 13-10-2005 à 09:46:22
en fin de compte il y a des warning et erreur dans mon client aussi:
Code :
|
Marsh Posté le 13-10-2005 à 10:35:56
Ouais bon, tu aurais pu nous recopier tes erreurs, hein, ça aurait été plus sympa que de nous laisser compiler nous-même.
Ensuite, ça :
Code :
|
ben c'est ignoble, on ne déclare plus une fonction comme ça depuis... hmm... 15 ans ?
Bref, remplace par :
int main(int argc, char **argv) |
Quant aux erreurs elles-mêmes :
test.c:19: warning: return-type defaults to `int' |
19 : main() doit explicitement retourner un int
44 : bzero() est défini dans strings.h, manque le #include
51 : bind() attend un struct sockaddr *, pas un struct sockaddr_in *
62 : gethostname() est défini dans unistd.h, il manque le...
... euuuh. Dis, t'aurais pas codé au hasard, des fois ?
La majeure partie des tes erreurs c'est à cause de typage incorrect ou de fonctions dont tu as oublié le #include.
Vu que tu utilises des fonctions POSIX j'imagine que tu travailles sur un unix-like, alors utilise "man" sur les fonctions que tu ne connais pas.
Marsh Posté le 13-10-2005 à 10:42:14
En plus de tes problèmes de warning dus aux include manquants, tu auras un gros soucis avec le "while (!feof(fd))" parce que cette instruction ne fait pas ce que tu crois.
feof ne sert pas à détecter la fin d'un fichier dasn une lecture, elle sert juste à te confirmer si, une fois la lecture terminée, cette lecture a été finie à cause de la fin du fichier.
Pour faire une boucle de lecture sur un fichier, on utilise juste le fait que la fonction de lecture elle-même renvoie une valeur particulière lorsque la fin de fichier est atteinte !!!
Exemples:
while ((carac=fgetc(...)) != EOF)
while (fgets(...) != NULL)
while (fread(...) > 0)
Remarque perso: Je conseillerais plutôt les fonctions "memset" et "memcpy" (standard) plutôt que "bzero" et "bcopy"
Ici un cours sur les sockets sous Unix : http://fr.lang.free.fr/cours/SocketCsyst_v1.0.pdf
Elmoricq a écrit :
|
Moi j'écrirais plutôt
int main(int argc, char *argv[]) |
Marsh Posté le 13-10-2005 à 09:01:04
Bonjour je doit faire un petit programme de transmission de fichier en c par socket sous linux, et j'ai des erreur de compilation et je n'en trouve pas la source, pourriez vous m'aider.
Merci