Je transfère du code de sockets BSD à Winsock, et je ne suis pas sûr de savoir comment gérer le cas ci-dessous.Mélange de poignées de fichiers et de sockets dans Winsock
Ma demande initiale exécute une sélection à la fois stdin et la prise réseau:
FD_SET(sock, &fd);
FD_SET(0, &fd);
...
if (select(..., &fd, ...)...)
Essayer de tourner ceci dans Winsock donne une erreur 10038 (WSAENOTSOCK), ce qui est logique, puisque ce qui était descripteur de fichier 0 dans Linux (stdin) n'est pas une socket (plus précisément: un type SOCKET) dans Windows.
Existe-t-il un moyen facile de porter ce test sur les sockets Windows?
merci Max. Je vais essayer ça aujourd'hui. C'est un peu dommage, cependant; J'espérais avoir une couche de portage winsock; il semble que cela nécessitera un peu plus d'une réécriture que j'avais envisagée. Tant pis. – Mikeage
Vous ne pouvez pas utiliser des E/S superposées sur un descripteur sauf s'il a été créé d'une manière spéciale. En particulier, cela signifie que vous ne pourrez pas utiliser des E/S superposées sur des handles hérités, tels que les trois flux standard. –