2016-11-24 12 views
0

私はちょうどPythonでSocketライブラリを学び始めました。私はチュートリアルに従っていますが、最初の例の1つでは、実行しようとするとエラーが発生します。まずソケットで接続するとConnectionRefusedErrorが返る

import socket    # Import socket module 

s = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
port = 12345    # Reserve a port for your service. 

s.connect((host, port)) 
print(s.recv(1024)) 
s.close 

私はいくつかのレビュー後、エラーメッセージを取得した後、私は直接のPythonにテキストをコピーし、それを実行した、手でそれを書いたが。しかし何らかの理由で私はまだこのエラーが発生します。

Traceback (most recent call last): 
    File "C:\Users\elikerr\Documents\socketFirstServer.py", line 7, in <module> 
    s.connect((host, port)) 
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it 

誰かが間違っていることを詳しく教えてください。 これは私が従っているtutorialです。 私はStack Exchangeでいくつかの答えを確認しましたが、それらのどれも私の質問に答えないようです。もしそうであれば、私が探しているものを知るためにソケットについて十分に知りません。

+3

ポート12345は開いていますか? –

+0

ポートが開いているかどうかを確認するにはどうすればいいですか? –

+1

そのポートで待機し、クライアントを実行する前に実行しているサーバーを作成しましたか?もしそうでなければ、あなたは何に接続したいと思っていますか? – Barmar

答えて

1

クライアントコードを投稿しただけなので、サーバーを設定する前にクライアントの作成に進むと思います。

次のコードをファイル(server.py)に入れて実行する必要があります。

C:\Users\pp9x2>netstat -an | findstr 12345 
TCP 192.168.56.1:12345  0.0.0.0:0    LISTENING 

は今、あなたが投稿し正確なコードを使用して、すべてがうまく動作する必要があります

#!/usr/bin/python   # This is server.py file 

import socket    # Import socket module 

s = socket.socket()   # Create a socket object 
host = socket.gethostname() # Get local machine name 
port = 12345    # Reserve a port for your service. 
s.bind((host, port))  # Bind to the port 

s.listen(5)     # Now wait for client connection. 
while True: 
    c, addr = s.accept()  # Establish connection with client. 
    print 'Got connection from', addr 
    c.send(b'Thank you for connecting') # Send bytes 
    c.close()    # Close the connection 

は今、サーバがそのように動作していることを確認します。

+0

私はこれを後で試してみます。 –

+0

また、これを動作させるにはインターネットに接続する必要がありますか? –

+0

インターネットは必要ありません。同じマシン上でサーバとクライアントの両方を実行している、または実行しているため、ネットワーク機器なしでも実行できます。このウィキペディア[記事](https://en.wikipedia.org/wiki/Network_socket)を見てください。あなたの質問に答えるなら、とにかく私の答えを受け入れることを忘れないでください。 – preezzzy

関連する問題