12

私は現在、mac os マウンテン ライオンで TCP サーバーを作成するプロジェクトに取り組んでいます。私は次のスクリプトを書きました: Server.py

この python スクリプト内で、以下に示すように、twisted を使用してポート 80 をリッスンしました。

reactor.listenTCP(80, factory)
reactor.run()

どのようにエラーが発生していますか:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py", line 436, in listenTCP
    p.startListening()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/tcp.py", line 641, in startListening
    raise CannotListenError, (self.interface, self.port, le)
twisted.internet.error.CannotListenError: Couldn't listen on any:80: [Errno 13] Permission denied.

tcp.py スクリプトに管理者ユーザーの権限が間違っているためだと思いますか? または、ポート < 1024 にアクセス許可を設定する方法はありますか? (権限を変更すると、そのようなサーバーのセキュリティにどのような影響がありますか?)

より良い解決策は高く評価されます。

4

4 に答える 4

20

ターミナルに移動して、sudo python server.py と入力するだけです。パスワードを尋ねられるので、パスワードを入力します。あなたの問題は解決されます。ハッピーコーディング

于 2013-03-23T08:03:08.107 に答える
8

コマンド sudo + サーバーの起動を使用してこの問題を解決しました。

于 2012-12-17T16:18:33.730 に答える
6

正しい軌道に乗っているようですね。慣例により、スーパーユーザー (または、一部の新しいシステムでは、特定の特別な権限を付与された通常のユーザー) のみが 1024 未満のポートにバインドできます。

このauthbindツールは、この権限を非スーパーユーザーに付与する便利な方法です。OS X ポート、https://github.com/Castaglia/MacOSX-authbindがあるようです (ただし、私自身は Linux でしか authbind を使用したことがありません)。

もう 1 つの方法は、launchd にポートをバインドさせ、それを Twisted プログラムに渡すことです。このアプローチは、OS X で人々が行っていることのより典型的なものであり、(かなり最近導入された) IReactorSocket.adoptStreamPortAPI を使用して実現されます。これを設定する方法と、Twisted プログラムがソケットを採用する場所を学習する方法の詳細については、launchd のドキュメントを参照してください。

于 2012-12-15T16:36:49.837 に答える
0

tcp46 が 80 を使用している可能性があります。Apache の電源を切ってください。すべて問題ありません。

sudo apachectl ストップ

于 2014-03-02T04:19:32.337 に答える