使用 python 无限循环连接到套接字

Connect to socket in infinate loop with python

我的本地计算机上有一个 ssh 守护程序 运行ning。我想无限连接到 ssh deamon 并回显接收到的数据。 这是我的脚本。

[azatuni@noc python-tests]$ cat test.py
#!/usr/bin/python

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
PORT = 22
DESTIP = '127.0.0.1'

while 1 == 1:
 s.connect((DESTIP, PORT))
 data = s.recv(1024)
 s.close()
 print data

但是当我 运行 脚本时,收到以下错误。但是没有循环,一切正常。

[azatuni@noc python-tests]$ ./test.py
SSH-2.0-OpenSSH_5.3

Traceback (most recent call last):
  File "./test.py", line 9, in <module>
    s.connect((DESTIP, PORT))
  File "<string>", line 1, in connect
  File "/usr/lib64/python2.6/socket.py", line 167, in _dummy
    raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor

先谢谢了。

您需要在再次连接之前创建一个新的套接字。这将适用于您的:

#!/usr/bin/python 
import socket  
PORT = 22  
DESTIP = '127.0.0.1'  
while 1 == 1:  
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 s.connect((DESTIP, PORT))  
 data = s.recv(1024) 
 s.close()  

 print data  

请注意,您发布的代码中有错误:

data = s.recv(102SSH-2.0-OpenSSH_5.3