ソケット実装のディレクトリ・パス関連の操作

この知識は注意を払う必要があります!
    1.クライアントへのパスを入力し、サーバが到達するために追加する必要があります/ 」をか、それは間違っている可能性があります
     2 。LISTDIR OSの呼び出しパス()メソッドのディレクトリの内容を見つけ、フォームのリストを返し、それがなければなりません文字列としてフォーマット
     3 。文字列形式のディレクトリの内容が、あなたが区切り文字として文字を使用する必要があり、その後、区切り.join()メソッドは、指定された区切り文字列のリストに変換されます
     4 。顧客を開拓後のディレクトリの出力内容に特定の分周器によって分離端子、出力分割()リスト
     /試験/ 111:上位ディレクトリ5.戻るサーバに、原理はCなど、現在のパスのパス名を削除する場合テスト114を除去する必要性に戻り
    。6 。、電流経路が原則第点係るセパレータ窓によって分離する必要があるが、この方法は、余分なスペースになり、リストの最後の要素のリストに分割されている
      パスが除去されるように同時に、名前空間、すなわちプラス(後に)分割を除去する必要がある[: -2 ](リストの最後の二つの要素マイナス)に


#1 サーバレイヤ
インポートソケット
 インポートOS 
SK = socket.socket()
sk.bind( ("10.70.2.143 "8080 ))
sk.listen()
コネチカット、ADDR = sk.accept()
は、現在のパスを取得し、以降の操作は、パスに基づいて動作する必要が 
conn.recv =(1024).decode(と腹筋_経路" UTF -8 " 追加する必要があり、" / "またはそれが間違っていることができる 
CURRENT_PATHの腹筋_経路+ = " / " 
#はsendata関数を定義し、以降の操作は、関数を使用する必要が
DEF のSendData(CONN、CURRENT_PATH):
    list_dir = os.listdir(CURRENT_PATHを)
     ディレクトリの形式は、文字列にリスト 
    = str_dir ' - ' .join(list_dir)
    conn.send(str_dir.encode(' UTF-8。'))
のSendData(コネチカット州、CURRENT_PATH) 

ディレクトリを変更し
ながら、 1 バック1レベル
    2番目のコマンドを受信するが送信され、 
    CMD = conn.recv(1024).decode('UTF-8 ' IF CMD = = .. #は、例えばEのように、頂部までのルートかどうかを決定する:/ IF(current_path.split(LEN / ))== 2: これは、2つの要素が決定され、パーティションの後に余分なスペースを追加するため 
            conn.send(" 最上位のルートディレクトリに達している、あなたが戻って行くことができない!" .encode(' UTF-8 ' ))
        
        リストに現在のパス(CURRENT_PATH)を取得し、現在のパス名のスペースを削除し、
        
            CURRENT_PATH = current_path.split(/ )[ - 2] 分離した後、それは余分なスペースが追加されますので、現在のパス名を除去する必要がありますそしてスペース、すなわち、最後の二つの要素のリスト
            #1 パスとは、オペレーティング・ストリングに、音符の端部は、「/」を追加する必要があるか、エラーが発生し 
            CURRENT_PATH = /  .join(CURRENT_PATH)+を/ 
            のSendData( CONN、CURRENT_PATH)
    指定したフォルダに 
        ファイル名= cmd.split(  [1]) 第二の要素の上に配置されているフォルダ名を超えるパスは、最初の要素は、コマンド名であるため 
        CURRENT_PATH + + =ファイル名' / "   完全に新しいパスからなる、現在のパスにフォルダ名を追加するには
        IF:os.path.isdir(CURRENT_PATH) 使用すると、入力した場合、フォルダ
            のSendData(CONN、CURRENT_PATHを)
         
            conn.send(" ないファイルフォルダ" .encode(' UTF-8 ' ))

はconn.close()
sk.close() 





クライアント層
のインポートソケット
SK = socket.socket()
sk.connect((" 10.70.2.143 、8080 ))
表示現在のパス 
dir_pathは=入力(ルートディレクトリを入力してください
sk.send(dir_path.encode(' UTF-8。' ))
current_dir = sk.recv(1024).decode(" UTF-8。" を印刷(current_dir.split(' - ' )) 

ディレクトリを変更し
ながら、 1。 
    CMD = INPUT(" 入力してください操作コマンド" バック1つのレベル
    IF CMD == " ... " 
        sk.send(cmd.encode('UTF-8 ' ))
        current_dir = sk.recv(1024).decode(" UTF-8。" 印刷(current_dir.split(' - ' ))
    指定したフォルダへの
    IF CMD == " CD " 
        ファイル名 = INPUT(" フォルダ名を入力してください" 
        sk.send((CMD + "  " +ファイル名).encode('UTF-8 ' ))
        current_dir = sk.recv(1024).decode(" UTF-8。" を印刷(current_dir.split(' - ' ))
sk.close()

 

おすすめ

転載: www.cnblogs.com/god-for-speed/p/11719053.html