Prb a la compilation vous vc++ [Résolu]

Signaler
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013
-
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013
-
Bonjour,

j'ai tenté de faire un programme en C utilisant les sockets, la personne qui lance son programme choisi elle meme l'ip et le port a se connecter, déclarées de la facon suivante

char ip[15];
int port;

et ensuite pour que l'utilisateur les remplissent:

gets(ip);
scanf("%d",port);

visual c++ (je tourne sous vc2003) me le compile bien mais me met quand meme un message: "c:\documents and settings\shadow\mes documents\prog c\prog\main.cpp(15) : warning C4700: local variable 'port' used without having been initialized
"

mais si je lance le programme il me lance le debug et me dis qu'il y a un probleme a la ligne scanf("%d",port);

voici l'intégralité du prog au cas ou:


#include <stdio.h>


#include <stdlib.h>


#include <winsock2.h>


#pragma
comment(
lib, "ws2_32.lib")


int main(
int argc,
char *argv[])


{


char ip[15];


int port;


printf("quel est l'ip: ");


gets(ip);


printf("quel est le port: ");


scanf("%d",port);


WSADATA WSAData;


WSAStartup(MAKEWORD(2,0), &WSAData);


SOCKET sock;


SOCKADDR_IN sin;


char *buffer =
new
char[255];


sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);


sin.sin_addr.s_addr = inet_addr("62.250.14.6");


sin.sin_family = AF_INET;


sin.sin_port = htons(6667);


if(connect(sock, (SOCKADDR *)&sin,
sizeof(sin)))


{


printf("la connection a echouee");


exit(0);


}


else


{


printf("socket connected!");


}


closesocket(sock);


WSACleanup();


printf("\n\n");


system("pause");


return 0;


}

.

8 réponses

Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
nan t'as pas compris ...

un exemple :

<--

char buff[42];

char ip[16];

int port;



printf("Entrez l'ip : ");

gets(buff);

strlcpy(ip, buff, strlen(ip));

printf("Entrez le port : ");

gets(buff);

port = atoi(buff);

-->

avec ca tu as bien ton ip et ton port

ip est bien une chaine de caractere

et port un int.
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
int atoi(char buff);



elle converti en int une chaine de character

ex:

int nb;

char buff[5] = "1024";

nb = atoi(buff);

printf("nb: %d", nb);

cela va retourner:

nb: 1024
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
Oula c'est archi pas securisé ton truc xD

enfin bref pour ton probleme deja tu pourrais commencer par les
utiliser tes variables, car tu ouvres une chaussette (socket) toujours
sur la meme ip et le meme port :

sin.sin_addr.s_addr = inet_addr("62.250.14.6");

sin.sin_family = AF_INET;

sin.sin_port = htons(6667);


ce qui est de l'erreur, a ta place je passerai par un char, suivit de 'port = atoi(temp);'
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
oups la police a merdé :p
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013

ouai en plus me suis trompé a un moment g fé un essai normalement c'est


sin.sin_addr.s_addr = inet_addr(ip);


sin.sin_family = AF_INET;


sin.sin_port = htons(port);
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013

on peu pas car siin.sin_port = htons(port); c'est impossible que ca soit une chaine de caractere il me dis...
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013

merci mais tu peu m'expliquer ce qu'est la fonction atoi(); ? :s

.
Messages postés
706
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2013

ah ok merci :)