2016-08-07 9 views
0

私は非常に単純なソケットサーバーコードをポート9999上で実行しています。サーバーとクライアントを起動すると、netstatでサーバーが動作していますソケット - シンプルサーバー/クライアント - socket.error:[Errno 10060]

Traceback (most recent call last): 
    File "client.py", line 6, in <module> 
    clisock.connect((host, 9999)) 
    File "C:\Python27\lib\socket.py", line 222, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

私のサーバーコード:

import socket 
import sys 
import time 

srvsock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
print 'Server Socket is Created' 

host = socket.gethostname() 
try: 
    srvsock.bind((host, 9999)) 
except socket.error , msg: 
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] 
    sys.exit() 

srvsock.listen(5) 
print 'Socket is now listening' 

while True: 
    clisock, (remhost, remport) = srvsock.accept() 
    print 'Connected with ' + remhost + ':' + str(remport) 
    currentTime = time.ctime(time.time()) + "\r\n" 
    print currentTime 
    clisock.send(currentTime) 

clisock.close() 
srvsock.close() 
と、クライアントは7180.

しかし
TCP 192.168.1.117:9999  0.0.0.0:0    LISTENING  7180 

の一時的なポート上で、クライアントの出力は、このエラーを示します

そして、私のソケットクライアントプログラムは以下の通りです:

import socket 
clisock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 

host = socket.gethostname() 
print host 
clisock.connect((host, 9999)) 


tm = clisock.recv(1024) 

clisock.close() 

print tm 

問題は何ですか?それはファイアウォールか、接続を落とす原因となりますか?

+1

は、なぜあなたはsocket.gethostname()およびない 'ローカルホスト' または127.0.0.1を使用していますか?これはsocket.gethostname()よりも信頼性が高くなります。 – Munchhausen

答えて

1

socket.gethostname()がFQDNを返すという保証はありません。サーバーを''にバインドしてください(空の文字列はすべての使用可能なインターフェイスを意味する記号名です)。クライアントをlocalhostまたは127.0.0.1に接続します。

Pythonのドキュメントには、低レベルソケットAPI [1]を使用して単純なTCPサーバー/クライアントアプリケーションを作成する非常に有用な例が含まれています。

[1] https://docs.python.org/2/library/socket.html#example

関連する問題