[解決済み] socket.error: [Errno 10013] アクセス権限で禁止されている方法で、ソケットにアクセスしようとしました。
質問
Windows 7でPython 2.6.5を使ってカスタムTCPスタックを作成し、ポート80の有効なhttpページ要求をローカルに提供しようとしています。 しかし、Windows 7のセキュリティが強化されたようで、問題が発生しました。 このコードはVistaで動作していました。
以下は私のサンプルコードです。
import SocketServer
import struct
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
headerText = """HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354"""
bodyText = "<html><body>some page</body></html>"
self.request.send(headerText + "\n" + bodyText)
if __name__ == "__main__":
HOST, PORT = "localhost", 80
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
C:\python>python TestServer.py トレースバック(最も最近の呼び出し)。
ファイル "TestServer.py", ライン 19, in server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) ファイル "C:\Python26﹑SocketServer.py", 行 400, in イニット self.server_bind() File "C:\Python26╱SocketServer.py", 行 411, in server_bind self.socket.bind(self.server_address)を実行します。 ファイル "", 行 1, in bindsocket.error: [Errno 10013] ある試みが ソケットにアクセスしようとしました。 アクセス権限で禁止されている
Windows 7でこれを動作させるには、具体的にどうすればよいのでしょうか?
[2010/5/5 @ 2344 PDTに編集] これは 答え の説明では、1024以下のポートにアクセスする場合、昇格/スーパーユーザー権限が必要なため、エラーが発生するとのことです。 より高いポート番号を使用して、それがうまくいくかどうか試してみるつもりです。 しかし、なぜ私のローカル管理者アカウントはポート80にアクセスできないのか、その理由が知りたいのです。
解決方法は?
Windows Vista/7では、UACを使用すると、管理者アカウントは、デフォルトで非特権モードでプログラムを実行します。
プログラムは、管理者として実行する前に、おなじみのUACダイアログで管理者権限を求めるプロンプトを表示する必要があります。Python スクリプトは直接実行できないので、コンテキストメニューに "Run as Administrator" というオプションはありません。
を使用することが可能です。
ctypes.windll.shell32.IsUserAnAdmin()
は、スクリプトが管理者アクセス権を持っているかどうかを検出するため、そして
ShellExecuteEx
python.exe の 'runas' 動詞で、sys.argv[0] をパラメータにして、必要なら UAC ダイアログを表示させます。
関連
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
pythonを使ったオフィス自動化コード例
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み] ポート80がSYSTEM(PID 4)で使用されていますが、これは何ですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?