0

PythonでTCPポートサーバーを作成しようとしています。これまでの私のコードは次のとおりです。

import socket 

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.bind(('',4000)) 
sock.listen(1) 

while 1: 
    client, address = sock.accept() 
    fileexists = client.RUNCOMMAND(does the file exist?)

    if fileexists = 0:
           client.close()
    else if: 
        filedata = client.RUNCOMMAND(get the contents of the file)

        if filedata = "abcdefgh":
              client.send('Transfer file accepted.')
        else:
              client.send('Whoops, seems like you have a corrupted file!')

    client.close()

クライアントにファイルが存在するかどうかを確認するコマンド(RUNCOMMMAND)を実行する方法がわかりません。また、クライアントがさまざまなコマンドを実行するために使用しているオペレーティングシステムを確認する方法はありますか(たとえば、LinuxにはWindowsとは異なるコマンドのファイルファインダーがあります)。そして、これが不可能かどうかは完全に理解していますが、これを行う方法があることを本当に望んでいます。

どうもありがとうございます。

4

2 に答える 2

1

XMLRPC が役に立ちます。XML-RPC は、HTTP 経由で渡される XML をトランスポートとして使用するリモート プロシージャ コール メソッドです。 http://docs.python.org/2/library/xmlrpclib.html

于 2013-03-20T03:41:01.063 に答える
0

非常に便利なbottle.pyマイクロサーバーを確認することをお勧めします。このような小規模なサーバータスクに最適であり、この上にHttpプロトコルを取得できます。コードに1つのファイルを含めるだけです。http://bottlepy.org

/ etc/hostsの内容を確認するためにhttp://blah:8090/get/file 動作するコードは次のとおりです。http://blah:8090/exists/filehttp://blah:8090/get/etc/hosts

#!/usr/bin/python
import bottle 
import os.path


@bottle.route("/get/<filepath:path>")
def index(filepath):
    filepath = "/" + filepath
    print "getting", filepath 
    if not os.path.exists(filepath):
        return "file not found"

    print open(filepath).read() # prints file 
    return '<br>'.join(open(filepath).read().split("\n")) # prints file with <br> for browser readability

@bottle.route("/exists/<filepath:path>")
def test(filepath):
    filepath = "/" + filepath
    return str(os.path.exists(filepath))


bottle.run(host='0.0.0.0', port=8090, reloader=True)

runメソッドのreloaderオプションを使用すると、サーバーを手動で再起動せずにコードを編集できます。その非常に便利です。

于 2013-03-22T06:35:11.710 に答える