4

以下に、現在使用しているコードを示します。

#! /usr/bin/python
print 'Content-type: application'
print '\n\n'

import SocketServer
import cgitb
cgitb.enable()

class MyTCPHandler(SocketServer.BaseRequestHandler):
    """
    The RequestHandler class for our server.

    It is instantiated once per connection to the server, and must
    override the handle() method to implement communication to the
    client.
    """

    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())
        self.request.sendall('Data Received')

if __name__ == "__main__":
    HOST, PORT = "localhost", 9989

    # Create the server, binding to localhost on port 9989
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)

    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()

コードは localhost では期待どおりに動作しますが、パブリック サーバーでは応答しません。

さらに、コードを 2 回実行すると、次のエラー メッセージが表示されます。

エラー: (98、「アドレスは既に使用されています」)

4

4 に答える 4

5

エラー: (98、「アドレスは既に使用されています」)

そのためにはこれが必要です:

socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

しかし、公開サーバーでは応答しません。

通常、共有ホスティングの場合、ソケットを作成することはできません。いずれにせよ、次のことを試して、それが役立つかどうかを確認できます。

HOST, PORT = "", 9989 # or (public_IP,9989)
于 2012-07-02T16:56:22.990 に答える