Je travaille sur un programme socket et tout semble correct lors de la compilation. D'abord, je compile et exécute le serveur, puis je compile et exécute le client. Le serveur fonctionnera correctement, mais lorsque le client démarre, un message d'erreur s'affiche dans la fonction Connect()
. Bien que la prise semble correcte, le client ne se connecte pas et le serveur ne voit pas la tentative de connexion.Erreur sur le programme client/serveur c: "Connect: opération de socket sur non-socket"
Le message d'erreur est:
Connect: opération Socket sur la non-prise
Voici le code côté serveur:
if ((ListeningSocket = socket(AF_INET, SOCK_STREAM,0)) == -1){
printf("socket failed!\n");
exit(1);
}
else
printf("Server: socket() is OK!\n");
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(5000);
ServerAddr.sin_addr.s_addr = INADDR_ANY; // any one for any network can connect
memset(&(ServerAddr.sin_zero), '\0', 8); //
if (bind (ListeningSocket, (struct sockaddr *)&ServerAddr, sizeof(struct sockaddr))==-1)
{
printf("Server: bind() failed!\n");
exit (1);
}
else
printf("Server: bind() is OK!\n");
if (listen(ListeningSocket,5)== -1){
printf("Server: Error listening on socket\n");
exit (1);
}
else{
printf("Server: listen() is OK, I'm waiting for connections...\n");
printf("Server: accept() is ready...\n");}
sin_size = sizeof(struct sockaddr_in);
NewConnection = accept(ListeningSocket, (struct sockaddr *)&ClientAddr,(socklen_t *)&sin_size);
printf("Server: accept() is OK...\n");
printf("Server: Client connected, ready for receiving and sending data...\n");
.........
....
//}
Et voici le client- code secondaire:
if(SendingSocket = socket(AF_INET, SOCK_STREAM, 0) == -1)
{
printf("Client: socket() failed!");
exit (1);
}
else
printf("Client: socket() is OK!\n");
ClientAddr.sin_family = AF_INET;
ClientAddr.sin_port = htons(5000);
ClientAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
memset(&(ClientAddr.sin_zero), '\0', 8);
if (connect (SendingSocket, (struct sockaddr *)&ClientAddr,
sizeof(struct sockaddr)) == -1)
{
perror("Connect");
exit(1);
}
else
{
printf("Client: connect() is OK, got connected...\n");
printf("Client: Ready for sending and/or receiving data...\n");
}
....
ohh okey il semble savoir très bien. vraiment je ne peux pas imaginer qu'une parenthèse passera mes 6 heures :) merci ... donc si quelqu'un obtient l'erreur de "erreur est Connect: Socket opération sur non socket" devrait être plus prudent en utilisant la parenthèse. – berkay
@berkay Non, ce n'est qu'une des causes possibles. – EJP