Op 22-7-2011 17:05, Andy Hume schreef:
> That was the most beautiful ugly thing I've seen in a long time. :-)
> Unfortunately I haven't managed to get it to work:
> 1) Try [DllImport("__Internal")] extern int _wapi_socket(..)
> Swallowed Exception: System.EntryPointNotFoundException: _wapi_socket
>> 2) Try [DllImport("mono-2.0")] extern int _wapi_socket(..)
> Swallowed Exception: System.EntryPointNotFoundException: _wapi_socket
>If I remember correctly, the class name including it's namespace may
need to be the same. I have used a similar 'hack' with the file I/O to
create an unbuffered stream I/O wrapper. I've used the
[MethodImplAttribute(MethodImplOptions.InternalCall)] attribute there;
just copy-pasted from the Mono sourcecode. Also, shouldn't the return
value be an IntPtr rather than an int?
However, looking at the mono code, there are no checks in the managed
part of the Socket construction. Did I miss anything, is it in the
unmanaged code perhaps? Have you tried to use the managed Socket
constructor, and optionally cast an integer value to the
AddressFamily/ProtocolType? You could then retrieve the socket handle
and make the bind/connect calls.
--
Ivo