Je dois envoyer des données à un serveur distant via UDP dans un port particulier et recevoir une réponse de celui-ci. Cependant, il bloque et je n'obtiens aucune réponse. J'ai besoin de vérifier si la valeur addrinfo que je reçois du getaddrinfo(SERVER_NAME, port, &hints, &servinfo)
est correcte ou non.Comment obtenir le numéro de port d'addrinfo dans unix c
Comment puis-je obtenir le numéro de port à partir de cette structure de données? Je sais inet_ntop(p->ai_family, get_in_addr((struct sockaddr *)p->ai_addr),s, sizeof s)
me donne l'adresse IP du serveur. (J'utilise la méthode dans le guide de Beej.)
cela semble fonctionner ... Je vois que le port est correct, cependant je reçois un "Erreur de réception dans UDP: Connexion refusée" quand j'essaye d'obtenir une réponse du serveur. pourquoi un tel problème se poserait-il? J'ai essayé connecté UDP – sfactor
"Connexion refusée" signifie généralement qu'il n'y a pas d'écoute de processus sur le port de destination que vous avez spécifié. Cela peut également indiquer qu'un pare-feu vous empêche d'envoyer vers ce serveur/port. –
Ce n'est pas grave, mais on pourrait affirmer (sa-> sa_family == AF_INET6) 'pour l'autre cas, car il y a aussi' AF_IRDA', 'AF_BTH' (Bluetooth),' AF_IPX', 'AF_APPLETALK',' AF_NETBIOS' et peut-être d'autres familles de protocoles pas encore inventées. –