プログラムの 2 つのインスタンスを実行し、それらを相互に接続できますが、別の IP の他の誰かがサーバーに接続しようとすると、ソケットの接続に失敗します。私のコードには、ユーザーのコンピューターの IP が入力されていませんが、(サーバーを実行しているのは私だけなので) 私の IP がハードコードされています。
サーバークラスの接続関数は次のとおりです。
def connect(self,host,port):
self.host = host
self.port = port
self.unconnected_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.unconnected_socket.bind((self.host,self.port))
self.unconnected_socket.listen(5)
これは、プログラムがゲームを作成するときです
self.server = server.Server()
self.server.connect(ip,port) #ip is my computer's ip address
self.serverThread = Thread(target=self.server.serve_forever)
self.serverThread.daemon = True
self.serverThread.start()
self.client.connect(ip,port)
次に、クラスのクライアント接続関数を示します。
def connect(self,host,port):
self.host = host
self.port = port
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((self.host,self.port))
別のコンピューターで誰かがプログラムを実行しているが、ゲームに参加することを選択した場合:
self.client.connect(ip,port)
pygames の Mastermind Networking Lib - 1.5.2 を少し変更して使用しています。