目前在Python中存在一个套接字库:
参考:http://docs.python.org/library/socket.html
但是,此库不包含基于文件描述符引用现有套接字的功能。我目前正在开发一个C ++库的Python绑定,它首先打开一个套接字,并且需要一种在事后用Python引用这个打开的套接字的方法。 请记住,这是在Windows上(我使用的是跨平台抽象层,忽略了文件句柄)。
代码与此类似:
fd = connect(...) # file descriptor
os.read(fd, buffer)
os.close(fd)
我希望找到一种基于文件描述符实际定义套接字对象的方法,而不会在os.dup
和os.dup2
中找到按值复制。
有人知道引用它的方法吗?
答案 0 :(得分:4)
由于此问题似乎尚未得到解答(为期一周),我将陈述我的解决方案。
我实现了一个内部绑定,用于从库中检索套接字信息,将ctypes
转换为pytuples
。因为应用程序本身包含在py2exe
中,所以此修改对最终用户来说并不显眼。
答案 1 :(得分:0)
答案 2 :(得分:0)
socket.fromfd(fd, family, type[, proto])
似乎做你想做的事。不幸的是,它仅适用于类似Unix的平台。
不幸的是,此功能似乎不适用于Windows。您可以考虑在http://bugs.python.org/记录一个错误(我认为没有理由为什么Windows套接字对象不能在Python套接字对象中包装)。
答案 3 :(得分:0)
这有帮助吗?您可以使用它来包装套接字和/或文件描述符,以便它们更像文件,同时提供有用的框架数据,如sock.readto('\ 0'):
http://stromberg.dnsalias.org/~strombrg/bufsock.html