Je souhaite envoyer un paquet UDP
.C++ UDP bind() renvoie toujours -1
J'utilise Visual Studio C++ 2017
, et je suis lié la lib Ws2_32.Lib
Voici le code de l'échantillon nécessaire pour illustrer ce problème:
#include <iostream>
#include <winsock2.h>
#include <sys/types.h>
#include <memory.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ws2tcpip.h>
int main()
{
sockaddr_in serverAddress;
memset(&serverAddress, 0, sizeof(serverAddress));
serverAddress.sin_family = AF_INET;// AF_UNSPEC;
serverAddress.sin_addr.s_addr = INADDR_ANY;
serverAddress.sin_port = htons(20000);
int result = 0;
SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0); //socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
result = bind(sock, (sockaddr*)&serverAddress, sizeof(serverAddress));
if (result == -1)
{
std::cout << "error!!!!!! Why?";
}
}
Pourquoi ne puis-je simplement bind()
le socket
ici ?
J'ai vu this poster ici, mais cela ne m'a pas aidé, puisque celui-ci était juste un problème de parenthèse.
Et l'erreur était? – EJP
@EJP veuillez lire le titre. – waas1919
J'ai lu non seulement votre titre, mais l'ensemble de votre message, et votre commentaire inepte. Vous n'avez pas fourni l'erreur. -1 n'est pas une erreur. C'est une * valeur de retour * qui * indique * une erreur. L'erreur réelle pour un appel Winsock est fournie par 'WSAGetLastError()'. C'est plutôt basique. Veuillez corriger votre code pour imprimer la valeur de l'erreur et inclure le résultat dans votre message. – EJP