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

时间:2015-03-21 09:27:35

标签: python sockets while-loop

我在本地计算机上运行了一个ssh守护程序。我想无限连接到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

事先谢谢。

1 个答案:

答案 0 :(得分:-1)

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

#!/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