J'ai écrit ce programme en C++ et sur la plate-forme Linux.
J'ai écrit un programme de socket client et serveur.
Dans ce programme client, j'ai écrit la fonction socket et immédiatement après, je fais d'autres actions qui ne dépendent pas du tout du socket (j'ai écrit 2 boucles for pour d'autres logiques).
Ensuite, j'ai préparé les structures requises pour le socket et j'ai écrit la fonction de connexion... dans cette fonction, je reçois une erreur comme quoi je ne peux pas me connecter parce que connect renvoie -1...
Mais pour le même programme, si j'écris la logique de la boucle for au-dessus de la fonction socket et immédiatement après les structures et la fonction connect, cela fonctionne bien.
Quelle peut être la raison pour laquelle je ne parviens pas à l'obtenir ? Veuillez m'aider à cet égard. Voici mon code
ici index1 et index 2 sont des variables entières simples...La chaîne de configuration est un tableau de caractères contenant 127.0.0.1:7005(adresse et numéro de port)...adresse et port sont des variables de tableau de caractères pour stocker l'adresse et le numéro de port....
struct sockaddr_in s1;
for(index1=0;configstring[index1]!=':';index1++)
{
address[index1] = configstring[index1];
}
address[index1++]='\0';
for(index2=0;configstring[index1]!='\0';index1++,index2++)
{
port[index2] = configstring[index1];
}
port[index2++]='\0';
int port_num = changeto_int(port);
if((sock_fd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
printf("unable to create a socket\n");
return 0;
}
s1.sin_family=AF_INET;
s1.sin_port=htons(port_num);
s1.sin_addr.s_addr=inet_addr(address);
memset(s1.sin_zero, '\0', sizeof s1.sin_zero);
int errno;
if(connect(sock_fd,(struct sockaddr *)&s1,sizeof(s1)) == -1)
{
printf("error:unable to connect\n");
printf("Error in connect(): %s\n", strerror( errno));
return -1;
}