好吧,我试图通过ioctlsocket(FIONREAD)获取recv读取的数据包的值,但该函数没有返回任何值。
查找
IOCtlSocket = Win32API.new('ws2_32', 'ioctlsocket', 'llp', 'i')
ret_val = -1
result = IOCtlSocket.call @descriptor, 0x4004667f, ret_val
if ret_val > 0
print "Há pacotes a receber"
end
ret_val不会改变,无论我放在什么价值上。
任何人都有提示或解决方案吗?
答案 0 :(得分:0)
最后一个参数是指针。指针在Win32API中实现为字符串。所以你需要做以下事情:
IOCtlSocket = Win32API.new('ws2_32', 'ioctlsocket', 'llp', 'i')
ret_val_buf = " " * 4 #Prepare a 4-byte buffer
result = IOCtlSocket.call @descriptor, 0x4004667f, ret_val_buf
ret_val = ret_val_buf.unpack("L")