我试图用Python实现windowsocket。在
大多数情况下,到目前为止,所有问题都已通过ctypes.windll.ws2\u 32以及pywin32库。在
但是,我还没有找到如何将下面的C++代码翻译成Python,我想知道有没有人能帮助:LRESULT WINAPI AsyncSocketProc(
__in HWND hwnd,
__in UINT uMsg,
__in WPARAM wParam,
__in LPARAM lParam
)
switch(uMsg) {
case WM_CREATE:
//...
case WM_SOCKET: {# this is basically an int constant
switch(WSAGETSELECTEVENT(lParam)){
case FD_ACCEPT:
//accepting new conn
case FD_READ:
//receiving data
}
}
}
在上面的代码中,我找不到WSAGETSELECTEVENT的Python等价物。在
对于FD峎ACCEPT,FD峎READ,我可以在win32file包中找到它们(pywin32 lib的)
最后,我试图实现这个窗口套接字编程的原因是,Window Socket服务器(上面)的C++版本对于我的应用程序是非阻塞的,但Python的内置选择。选择正在阻塞。所以我想看看我能否把C++版本移植到Python,看看它是否有效。在
编辑时间:
我想澄清一下,Socket服务器是对现有的 C++程序 >的“插件”,它不支持线程< /强>。在
socket服务器需要等待(无限期)客户机连接,因此它需要持续监听。
所以使用普通的Python套接字或选择。选择将需要一个while循环(否则它如何充当一个持续监听事件的服务器?请纠正我的错误),这会阻止主程序。在
不知何故,使用上面的windowsocket服务器回调,主程序不会被阻塞。这是我尝试将其移植到Python的主要原因。在
套接字服务器最好使用Python,因为服务器需要的许多相关lib都是用Python编写的。在
非常感谢。在