[解決済み] Pythonで "connection refused "というエラーが発生するのはなぜですか?(ソケット)
2022-02-07 05:12:55
質問
ソケットの初心者で、全く理解できていないことをお許しください。
サーバースクリプト(server.py)があります。
#!/usr/bin/python
import socket #import the socket module
s = socket.socket() #Create a socket object
host = socket.gethostname() #Get the local machine name
port = 12397 # Reserve a port for your service
s.bind((host,port)) #Bind to the port
s.listen(5) #Wait for the client connection
while True:
c,addr = s.accept() #Establish a connection with the client
print "Got connection from", addr
c.send("Thank you for connecting!")
c.close()
とクライアントスクリプト(client.py)を作成します。
#!/usr/bin/python
import socket #import socket module
s = socket.socket() #create a socket object
host = '192.168.1.94' #Host i.p
port = 12397 #Reserve a port for your service
s.connect((host,port))
print s.recv(1024)
s.close
デスクトップターミナルに行き、スクリプトをタイプして起動する。
python server.py
その後、ノートパソコンの端末でクライアントスクリプトを起動します。
python client.py
が、以下のようなエラーが発生します。
ファイル "client.py", 行 9, in
s.connect((host,port))
ファイル "/usr/lib/python2.7/socket.py", ライン 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] 接続が拒否されました
別のポート番号で試してみましたが、効果がありません。しかし、同じipとクライアントスクリプトのgethostname()メソッドを使用してホスト名を取得することができ、デスクトップ(サーバー)に対してpingを打つことができました。
どうすればいいですか?
の代わりに
host = socket.gethostname() #Get the local machine name
port = 12397 # Reserve a port for your service
s.bind((host,port)) #Bind to the port
を試してみてください。
port = 12397 # Reserve a port for your service
s.bind(('', port)) #Bind to the port
というのは、リスニングするソケットがあまり制限されないようにするためです。そうしないと、リスニングは1つのインターフェイスでのみ行われ、そのインターフェイスはローカルネットワークとは関係ないものになってしまうからです。
一例としては
127.0.0.1
このため、異なるホストからの接続は不可能です。
関連
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み] データ型が理解できない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない