in reply to [OT]: How to do fileno() and Win32::APIFile::FdGetOsFHandle() in C
I already have the C equivalent of $sock ...
What do you mean by that? What is it that you have and where did it come from?
My probably incomplete understanding of this is that unlike *nix, where sockets masquarade as files (File*), WS2 sockets are natively completely different beasts and cannot be used directly with the vast majority of APIs that expect a native file handle, and certainly not be used with CRT calls that expect a FILE*.
Perl works around this difference in platform semantics by (in the terms of the comments) "faking it". See the routine _alloc_osfhnd() in win32.c(~2200) for some info. Basically, they open a native handle to NUL, and build a fake CRT FILE* around it and use that to allow *nix-style semantics to operate on WS2 handles.
Depending what you have and where you got it from, you might have to emulate that in order to achieve your goal.
|
|---|