Je suis en train de porter linux app sous win32 (msvc 9.0) et après l'avoir terminé, je rencontre un comportement non-par défaut sur des choses simples comme socket()
.Comment créer un socket via socket() sur MSVC?
#include <winsock2.h>
#include <ws2tcpip.h>
int main(int argc, char **argv)
{
int subsock;
if ((subsock = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
printf("Failed to open socket (ret value = %d)\n", subsock);
}
}
Cette imprime Failed to open socket (ret value = -1)
chaque fois. Quel est le problème et comment ouvrir socket sur win32?
Merci, vous m'avez vraiment aidé avec ça! – DinGODzilla
Je suppose que lors de la compilation de code à la bibliothèque dynamique, WSAStartup() doit être placé dans DllMain(). Est-ce exact? – DinGODzilla
Il est vraiment dangereux de mettre du code dans DllMain - en particulier lorsqu'il s'exécute dans une autre DLL. Ayez juste une fonction d'aide dans votre code qui suit si WSAStartup a été appelé avec une variable globale (et appelle WSAStartup si nécessaire). Juste avant de créer une socket ou toute autre fonction réseau, appelez votre fonction d'assistance. – selbie