Winsock2ソケットをブロッキングから非ブロッキングに変更したい。そして、これはws2_32.dllライブラリの「ioctlsocket」関数を呼び出すことで実現できることを私は知っています。しかし、私の実装は、ソケットエラーを示す-1の戻り値でその目的を果たすことができません。WSAGetLastErrorを呼び出してエラーコードを取得しようとしましたが、10014が返されます。これは、無効なポインタと関係があると思います。この場合、私のせいは何でしょうか?誤って宣言したり、API関数に値を渡したりしているのではないかと思いますが、その理由がわかりませんでした。または、誰かがソケットを非ブロッキングにする別の方法を提案できますか?
(何らかの理由で、Rubyのソケットクラスを使用できません。)
これが私のコードです(@fdは私のソケットへの記述子です):
proc = Win32API.new( "ws2_32"、 "ioctlsocket"、 "plp"、 "l")ret = proc.call(@fd、0x8004667E、1)#FIONBIO p ret => -1