Python套接字发送问题

时间:2011-03-05 03:42:21

标签: python sockets service connection port

我目前正在开发一个连接到IP /端口的简单Python脚本,并允许您执行命令。有点像telnet。我希望它连接到让我们说MySQL(只是一个例子)并像执行Telnet或NetCat一样执行MySQL命令。 但是让我说我​​连接到服务,我无法执行命令。我正在尝试连接到localhost上的自定义端口。让我展示一下代码:


try:
    sock.connect((host, port))
    recvdata = sock.recv(socksize)
    print("Type your commands now")
    while(1): #Setting a loop
        print(recvdata)
        userInput = raw_input(">")
        sock.send(userInput + '\r\n\r\n')
        print(recvdata)
except KeyboardInterrupt:
    print("\nConnection closed")
    sys.exit()
这就是我连接时得到的结果:

:: !Test service! ::
如果我输入任何内容,我只会再次获得横幅。无论如何,一遍又一遍的横幅。

2 个答案:

答案 0 :(得分:1)

嗯,难怪。发送输入后,您实际上从未在通信套接字上调用sock.recv。 在循环之前,recvdata包含来自初始connect的“横幅”。但是一旦你进入循环,这个变量永远不会改变。

我相信你想要的是:

sock.connect((host, port))
recvdata = sock.recv(socksize)
print(recvdata)
print("Type your commands now")
while(1): #Setting a loop
    userInput = raw_input(">")
    sock.send(userInput + '\r\n\r\n')
    recvdata = sock.recv(socksize)
    print(recvdata)

答案 1 :(得分:1)

您的recvdata = sock.recv(socksize)不在recv循环中。我认为,对socket programming in Python的一个很好的介绍可能对你有所帮助。您使用该介绍教程很容易发现您之前的问题和这个问题。看一下示例套接字echo服务器/客户端(at this site),您可以进一步修改并继续执行任务。运行两个单独的终端,在一端运行echo服务器,并使用地址pointint为127.0.0.1的echo客户端。

相关问题