Gné ? root ?Envoyé par sorry60
Gné ? root ?Envoyé par sorry60
root oui pardonEnvoyé par Emmanuel Delahaye
Petit conseil pour perror met plutot comme ca
Sans \n au résultat d'une erreur tu aura ca sur la sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 perro("lenomdelafonction()");
Par exemple pour un perror("connect()");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2lenomdelafonction: l'erreur survenue
tu aurais eu ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 connect(): connection refused
Tu as bien lancer le serveur en premier?
C'est le serveur qu'il faut lancer en root pas le client.
Oui quand meme j'ai lancé le serveur avant d'essayer de m'y connecterEnvoyé par Skyrunner
J'ai lancé les deux en root, puis j'ai re-lu le code une 10ène de fois, puis consulter les pages man de chaque fonction mais je ne trouve pas l'erreur.. je commence à désespérer
Tu te connectes sur le port 4000 qui est > 1024 donc pas besoin de lancer en root
Sinon a part ca
c'est
Et pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sout.sin_port = htons(4000);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sout.sin_port = htonl(4000);
Oui je sais, c'est ce que tu m'as expliqué quelques posts plus haut mais je ne veux prendre aucun risque tant que le connexion ne s'etablit pas..Envoyé par Skyrunner
Genial tu as trouvé l'erreur, j'ai corrigé et maintenant ça se connecte !Envoyé par Skyrunner
Reste plus qu'à envoyer le message..
Merci à tous pour votre aide
Topic resolu
J'ai rajouter -lws2_32 dans mon linker :
Seulement mon compilateur me dit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <winsock2.h> #pragma comment (lib,"-lws2_32.lib") int main (void) { WSADATA WSAdata; WSAstartup (MAKEWORD (2,0), &WSAdata); }[Linker error] undefined reference to `WSAstartup'
[Warning] implicit declaration of function `WSAstartup'
ce n'est pas ça du tout, "rajouter dans les optiosn du linker"
Orojet->options du projet-> onglet "paramètres"...
Moi sous Dev Cpp
Tools -> Compiler Options -> Add these commands to the linker command line
J'ai rajouter (pour les sockets)
-lwsock32
mais ça, c'est commun à tous les projets...
Les options générales du compilateur, moi, je m'en sers pour mettre -Wall -Wextra...
Tu met ca pour les options du compilo, pas pour celle du linker.Envoyé par Médinoc
En fait j'y met ici car lorsque je cree vite fait un programme avec des sockets, je ne cree pas forcement un projet donc je coche et je decoche si j'utilise ou pas les sockets.
Caÿ mal...Envoyé par Skyrunner
J'ai mis -lwsock32 dans mon compilateur maintenant mon programme marche mais j'ai encore 2 warnings :Je ne comprend pas très bien ces warnings.[Warning] ignoring #pragma comment
Dans ma fonction main [Warning] control reaches end of non-void function
Tu peux virer ce pragma. Pas portable...Envoyé par benjiprog
Il manque un return 0; a la fin du main().
Ca marche, mais alors la la ligne :Tu peux virer ce pragma. Pas portable...
ne sert a rien?
Code : Sélectionner tout - Visualiser dans une fenêtre à part #pragma comment (lib,"-lws2_32.lib")
Les directives #pragma sont par définition non portables. Se sont des extensions valides pour un compilateur donné (ici, VC++6). Les autres compilateurs sont censés ignorer la directive (avec ou sans warning, peu importe).Envoyé par benjiprog
Problème, si
#pragma XXX
a un sens sur le compilateur A et un autre sens sur le compilateur B, c'est la catastrophe. Pour être portable, ne jamais utiliser les pragmas.
Sous VC++6, il y a d'autres moyens plus propres de signaler au linker qu'il doit ajouter une bibliothèque...
si tu ne veux pas supprimer le pragma pour Visual 6, tu peux t'assurer qu'il ne soit "vu" que par le compileur microsoft:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #ifdef _MSC_VER //cette macro représente la version du compilo MS #pragma comment (lib,"ws2_32.lib") #endif
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager