我是 python 新手 :) 我想创建持久套接字。我尝试使用文件描述符来做到这一点。我尝试的是:
打开一个套接字套接字连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
获取它的文件描述符编号
fd = s.fileno()
以 I/O 方式打开文件描述符
os.open(fd)
但我明白了OSError: [Errno 9] Bad file descriptor
我说我是 python 新手,也许我对实现有误。但我尝试了一个更简单的例子os.close(s.fileno())
,我得到了同样的错误OSError: [Errno 9] Bad file descriptor
我找到了一个用 ruby 编写的示例,并对其进行了测试,它可以工作。如何在 Ruby 中的 Unix 上创建持久网络套接字?
谁能帮我把它写进python,我想要实现的是:socket_start.py google.com(他会打印fd号) sleep 10 socket_write.py fd_number 'something' sleep 10 socket_read.py fd_number 1024
我希望你明白我想做什么。谢谢指教!
在您回复后,我尝试了下一个代码:
1
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('google.com', 80))
s.send('GET /\n')
print s.fileno()
2
#!/usr/bin/python
import os
import sys
fd = int(sys.argv[1])
os.read(fd, 1024)
错误是OSError: [Errno 9] Bad file descriptor
我确定问题出在哪里(我是 php 开发人员)。我认为和 php 一样,python 在关闭脚本后会删除垃圾。如何在 python 中解决这个问题?