IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Error socket 10014


Sujet :

C

  1. #1
    Membre averti Avatar de beau_g
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 26
    Par défaut Error socket 10014
    Bonjour, je n'arrive pas à cerner ou se trouve le problème dans mon programme, je cherche à envoyer en multicast un message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    /*
     * multisocket.cpp
     *
     *  Created on: 11 juil. 2017
     *      Author: begau
     */
     
    #include "multiSocketSendto.h"
     
    #define MSGBUFSIZE 1024
     
    void init_multisendto(void)
    {
    	WSADATA WSAData; // Contains details of the Winsock implementation
     
    #ifdef _WIN32
    	if (WSAStartup (MAKEWORD(1,1), &WSAData) != 0)
    		{
    			printf("Error n°%d : Error during initialization.\n", SOCKET_ERRNO);
    		    exit(SOCKET_ERRNO);
    		}
     
    #endif
    }
     
    int init_connection_multisendto (struct sockaddr_in *addr, int PORT, char *GROUP_IP){
     
    	int msock;
    	int sizeaddr = sizeof(addr);
     
    	//create what looks like an ordinary UDP socket
    	if ((msock=socket(AF_INET,SOCK_DGRAM,0)) < 0)
    	{
    		printf("Error n%d : Unable to initialize socket.\n",SOCKET_ERRNO);
    		//exit(SOCKET_ERRNO);
    		return SOCKET_ERRNO;
    	}
     
    	//set up destination address
    	memset(addr,0,sizeaddr);
     
    	addr->sin_family=AF_INET;
    	addr->sin_addr.s_addr=inet_addr(GROUP_IP);
    	addr->sin_port=htons(PORT);
     
    	return msock;
    }
    	//now just sendto() our destination!
     
    int write_multisendto(SOCKET msock, struct sockaddr_in *addr, char *rq)
    {
    	int sizeaddr = sizeof(addr);
     
    	if (sendto(msock, rq, strlen(rq)+1, 0, (struct sockaddr*) addr,
    			sizeaddr )<0)
    	{
    		printf("Error n%d : Unable to send message.\n",SOCKET_ERRNO);
    		//exit(SOCKET_ERRNO);
    		return SOCKET_ERRNO;
     
    	}
    	return 0;
     }
     
     void end_multisendto(void)
     {
     #ifdef WIN32
     	WSACleanup();
     #endif
     }
     
     void end_connection_multisendto(SOCKET sock)
     {
     	if (closesocket(sock) != 0)
     	{
     		printf("Error closing the socket.\n");
     		exit(SOCKET_ERRNO);
     	}
     }

    Mon message d'erreur est le suivant :
    "Error n10014 : Unable to send message.\n
    Voici l'extrait du main ou j'utilise la fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    void *send_multi(void *arg)
    {
    	struct sockaddr_in *addr;
    	init_multisendto();
    	msocket = init_connection_multisendto (addr, PORT1, GROUP_IP);
     
    	while(1)
    	{
    		char req[1024] = {0};
     
    		rq = requestApp(req);
     
    		printf("\nType 'S' to send the command ('Q' to exit): \r\n");
    		char c = getchar();
    		fpurge(stdin);
    		if ((c=='s')||(c=='S'))
    		{
     
    			write_multisendto(msocket, addr, rq);
     
    			pthread_mutex_lock (&mutex0); /* On verrouille le mutex */
    			pthread_cond_signal (&condition0); /* On délivre le signal : condition remplie */
    			pthread_mutex_unlock (&mutex0); /* On déverrouille le mutex */
     
     
    			sleep(3);
    		}
    }

    Pouvez vous me donner un explication à cette erreur svp je ne comprend pas les explications trouvées sur le net ! Merci d'avance

    Bonne journée.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Attention, ceci est mauvais: int sizeaddr = sizeof(addr); Il faut utiliser sizeof(*addr).

    Aussi: 10014 correspond à:
    WSAEFAULT: The system detected an invalid pointer address in attempting to use a pointer argument in a call.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. DataSnap - error socket 10061 - relancer connexion
    Par inspecteur rick dans le forum Web & réseau
    Réponses: 0
    Dernier message: 29/07/2014, 19h59
  2. ERROR : socket = new Socket(stringAddressIP, 2000);
    Par Jennifer75a dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/03/2014, 18h53
  3. [SqlServer2000][WinXP SP2] Error establishing socket
    Par mzt.insat dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 13/11/2005, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo