9

私は、インターネットにアクセスできる2台の異なるコンピューター間でデータを送信するスクリプトに取り組んでいます。Pythonのソケット標準モジュールを使用しています。クライアントとサーバーの両方を1台のコンピューターで実行すると正常に動作しますが、別のコンピューターで実行すると動作させることができません。

これが私のサーバーコードの一部です:

import socket, time,os, random

class Server():
  def __init__(self,Adress=('',5000),MaxClient=1):
      self.s = socket.socket()
      self.s.bind(Adress)
      self.s.listen(MaxClient)
  def WaitForConnection(self):
      self.Client, self.Adr=(self.s.accept())
      print('Got a connection from: '+str(self.Client)+'.')


s = Server()
s.WaitForConnection()

そして、これが私のクライアントコードの一部です:

import socket

class Client():
   def __init__(self,Adress=("Here is the IP of the computer on which the \
                                   server scrip is running",5000)):
      self.s = socket.socket()
      self.s.connect(Adress)

c = Client()

インターネットにアクセスできる2台の異なるコンピューターでこれらのスクリプトを実行すると、クライアントは接続できず、エラーが発生し、サーバーは接続を永久に待機します。

私は何が間違っているのですか?

4

1 に答える 1

9

これはおそらく、問題ないように見えるコードとは関係ありません。むしろ、これはあなたが使用しているIPアドレスの問題だと思います。

コンピューターが異なるネットワーク上にある場合は、渡すIPアドレスがネットにアクセスできるものであることを確認する必要があります。基本的にこれが意味するのは、使用しているIPが192.168.?。?で始まる場合です。次に、間違ったIPを使用しています。

これは、次のコマンドを実行することで簡単に確認できます:
(windows):ipconfig
(linux):ifconfig

正しいIPアドレスを使用している場合は、ルーターの設定やファイアウォールの設定を確認します。これにより、使用しようとしているポート番号がブロックされる可能性があります。

于 2012-12-22T23:39:03.347 に答える