为什么python中的这个TCP连接不起作用?

时间:2015-04-13 22:32:27

标签: python tcp network-programming

我试图创建一个程序,可以通过TCP python服务器在我的其他PC上执行命令行命令...但是当我想得到我的命令的结果它只是卡在那里什么也没做,盯着我..帮助将不胜感激

客户端:

try:
    sock.sendall("3")
    if sock.recv(10000) == "ready for sandbox":
        print "ready to transmit"   
except:
    print "error"
    sys.exit(1)

while True:
    try:
        command = raw_input("--> ")
        sock.sendall(command)
        sock.recv(10000)
    except:
        print "connection lost"
        sys.exit(1)

服务器:

while True:
        data = connection.recv(10000)
        print >>sys.stderr, 'received "%s"' % data

    elif data == "3":
        connection.sendall("ready for sandbox")
        while True:
                try:
                    cmd_data = connection.recv(10000)
                    os.system(cmd_data +" > C:\output.txt")
                    result = open(r"C:\output.txt",'r').readlines()
                    connection.sendall(result)
                except:
                    pass

我希望能够随着客户端始终发送命令并接收其输出......并且服务器应尽可能没有错误或至少不会崩溃

顺便说一下..如果你发现缩进错误,我的程序中的缩进是可以的,这可能是因为stackoverflow ......

服务器cmd:

starting up on localhost port 10000
waiting for connection
connection from ('127.0.0.1', 52674)
received "3"

客户端cmd:

--> 3
connecting to localhost port 10000
ready to transmit
--> dir

帮助? :(

1 个答案:

答案 0 :(得分:0)

问题在于它尝试发送循环而不是字符串,因此修复循环并且str(result)完成了这项工作......现在完美无缺地工作