2012-12-08 7 views
5

サーバーから接続ハッシュを受け取る必要があるプログラムを作成しています。私が使用している場合:Pythonでs.recv()を使用すると奇妙なエラーが発生する

connhash = s.recv(1024) 

を私はこのエラーを取得する:

[Errno 10054] An existing connection was forcibly closed by the remote host 

が、これは私のせいか、サーバの障害ですか?ここで

は(s.recvに至るまでのコードの一部)

stringfmt = u'%(user)s;%(host)s:%(port)d' 
string = stringfmt % data 
structfmt = '!bh' 
encoded = string.encode('utf-16BE') 
packetbytes = struct.pack(structfmt, 2, len(encoded))+encoded 
s.send(packetbytes) 
connhash = s.recv(1024) 

である私は、2.7

EDIT vのパイソンを使用しています:これは、あなたが知っているだけのようMinecraftのためのものです。

+0

彼女のサーバーは接続を閉じます - おそらくあなたが理解していない何かを送信しているからかもしれません。正しく動作していない可能性があります。 – mata

+0

私には強制的にRST(FINとは対照的)のように聞こえますが、実際に知りたければ、おそらくパケットキャプチャ(tcpdump、wiresharkなど)を行うべきです。 – FatalError

答えて

2

リモートサーバーがあなたの接続が気に入らないように思えます。これは、あなたがプロトコルミスをしている(つまり、送信しているコマンドが間違っている)か、正常にログインしていないか、IPが禁止されている可能性があります。

デバッグするには、telnetのようなものを使用して接続を複製し、エラーがどこで発生しているかを調べることができます(そうでない場合、実装に何か問題があります。プロトコルの理解、またはサーバーの使用をブロックされている場合)。

また、Wiresharkのようなパケットキャプチャツールを使用して、送受信されているパケットを調べ、そのパケットに問題があるかどうかを確認してください。

関連する問題