1

質問

Web 上で動作するソケットサーバーを作成するには?

それは単に正しくポート転送することの問題ですか、それともドメインを購入する必要がありますか?

ドメインが必要な場合、これを行う無料の方法はありますか?

バックグラウンド

私は現在、Windows 7 (32 ビット) で Python 2.7.3 を使用して基本的なIMプロジェクトに取り組んでいます。

Python を使用して、コンソールから友人のコンピューターの 1 つにメッセージを送信したいと考えています。 これは非常に貴重ですが、1 台のマシン内でしか機能しません。

インターネット経由でメッセージを送信する試みで、いくつかの戦略を使用してみました。

  1. 最終的には自分の Mac をサーバーとして使用することになるため、Port Mapを使用してさまざまなポートをポート転送しました。これを行うと、Python は次のエラー メッセージを表示して応答します。

    Enter the PORT number (1 - 10,000)4235
    Socket Created
    Bind failed. Error Code : 49 Message Can't assign requested address
    
    Traceback (most recent call last):
       File "/Users/BigKids/Desktop/Server v3.py", line 18, in <module>
          sys.exit()
      SystemExit 
    
  2. 自分の IP アドレスをポートとして単純に入力しようとしましたが、エラー メッセージが表示されます。

    Please enter the host's IP >>> 68.***.***.128
    Enter the PORT number (1 - 10,000)2432
    Socket Created
    Bind failed. Error Code : 10049 
    Message The requested address is not valid in its context
    
    Traceback (most recent call last):
      File "D:\Python Programs\Sockets\First Project\Server v3.py", line 19, in   <module>
        sys.exit()
      SystemExit
    

    必要なコードは次のとおりです。

    HOST = raw_input("Please enter the host's IP >>> ")
    
    PORT = input ("Enter the PORT number (1 - 10,000)")
    
    
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    print "Socket Created"
    
    try:
        s.bind((HOST, PORT))
    except socket.error, msg:
        print "Bind failed. Error Code : " + str(msg[0]) + " Message " + str(msg[1])
        sys.exit()
    
4

1 に答える 1

1

サンプル コードは、インターネット上で動作する必要があります。プログラミングの観点からは、LAN 上で動作するものとインターネット上で動作するものの間に大きな違いはありません。

ただし、インターネット経由でソケットに接続する場合は、リッスンしているソケットをルーティング可能なパブリック IP アドレスにバインドする必要があります。

友人のコンピュータが別の LAN 上の単なる PC である場合、パブリック IP アドレスを持っていない可能性が非常に高く、その結果、接続できません。

1 つの解決策は、このチャットの例に似たものを作成server.pyし、(パブリック IP アドレスを使用して) インターネット サーバー上で実行することです。あなたとあなたの友人の両方がclient.py.

于 2013-02-08T05:59:43.940 に答える