Pythonネットワークプログラミングsocket_server単一スレッド応答要求


説明:pythonネットワークプログラミングに接触し始めたばかりで、socketを使用して簡単な単一スレッドserverを作成します.socketモジュールはファクトリ関数を提供し、socketとも呼ばれ、開発者は関数を呼び出してソケットオブジェクトSを生成することができる.ネットワーク層操作を実行するには、S上のメソッドを呼び出すことができる.クライアントプログラムでは、S.connectを呼び出してサーバに接続できます.サーバプログラムでは、S.bindとS.listenがクライアントプログラムの接続を待つように呼び出すことができます.クライアントプログラムが接続を要求すると、サーバプログラムはS.acceptを呼び出して要求を受け付けることができ、この方法はクライアントプログラムに接続する別のソケットオブジェクトS 1に戻る.接続されたソケットオブジェクトがあれば、そのオブジェクトのsendメソッドを呼び出してデータを転送し、そのオブジェクトのrecvメソッドを呼び出してデータを受信することができます.SOcketモジュールが提供する関数とsocketオブジェクトの提供方法については、python関連の技術書(pythonテクニカルマニュアルなど)を参照してください.
ステップ3:
1.モジュールオブジェクトの作成
2.モジュールオブジェクトのプロパティの作成
3.モジュールオブジェクトを呼び出す方法モジュールが実現したい機能を完成する
【ソースコードは以下の通り】
#import socket module
#      
from socket import *                  

#                                 
serverSocket = socket(AF_INET, SOCK_STREAM) 
 
#Prepare a sever socket
#      server     IP   8000    
serverSocket.bind(('',8000))     

#           ,5       maxpending                                    
serverSocket.listen(5)                                          
print 'The server socket is ready...'
while True:
    #Establish the connection
    print 'Ready to serve...'

    #              (s1,(ipaddr,port))
    connectionSocket, addr = serverSocket.accept()   
    try:

        #        ,  8192  ,             
        message = connectionSocket.recv(8192)  

        #          2          
        filename = message.split()[1]   

        #     filename(    filename            )                          
        f = open(filename[1:])                                    
        outputdata = f.readlines(-1)
        for i in range(0, len(outputdata)):
  
            #    
            connectionSocket.send(outputdata[i])   

        #               
        connectionSocket.close()

    #                                     
    except IOError:                                                   
        #Send response message for file not found
        connectionSocket.send('404 Not found')
        #Close client socket
        connectionSocket.close()

#  server    
serverSocket.close()                                               

【このプログラムを実行する】
ソースファイルがあるディレクトリの下にhelloを作成します.htmlファイル(私が書いたHello world!など、任意の文字を書きます).他の任意のホスト上のweb browserアドレスバーにhttp:\serverHost:8000helloと入力します.html車に戻ると、htmlファイルに書かれた文字(serverHostとは、serverを実行するホストIP)が表示されます.ネイティブでserverスクリプトを実行し、ネイティブのbrowserでserverにアクセスし、serverHostを127.0.0.1またはlocalhostに変更することもできます.
pythonを初めて勉強します.皆さんが教えてくれることを願っています.私に連絡してください:[email protected]