Ich portiere Code von BSD-Sockets nach Winsock, und ich bin mir nicht sicher, wie ich den folgenden Fall behandeln soll.Mischen von Dateigriffen und Sockets in Winsock
Meine ursprüngliche Anwendung läuft eine Auswahl sowohl stdin und die Netzwerkbuchse:
FD_SET(sock, &fd);
FD_SET(0, &fd);
...
if (select(..., &fd, ...)...)
Der Versuch, dies in Winsock zu laufen gibt einen Fehler 10038 (WSAENOTSOCK), was Sinn macht, da das, was war Datei-Handle 0 in Linux (stdin) ist kein Socket (genauer: ein SOCKET-Typ) in Windows.
Gibt es eine einfache Möglichkeit, diesen Test auf Windows-Sockets zu portieren?
danke Max. Ich werde das heute versuchen. Es ist ein bisschen eine Schande, obwohl; Ich hatte gehofft, eine Winsock-Portierungsschicht zu haben; Es scheint, als würde dies ein bisschen mehr von einer Neufassung erfordern, die ich mir vorgestellt hatte. Naja. – Mikeage
Sie können Overlapped IO für ein Handle nur verwenden, wenn es auf eine spezielle Weise erstellt wurde. Dies bedeutet insbesondere, dass Sie überlappende IO für geerbte Handles wie die drei Standardstreams nicht verwenden können. –