私はピアツーピアチャットアプリケーションの作成を担当されていますが、実際にメッセージを送信するのに問題があります。Pythonピアツーピアチャット(ソケット)
本質的に、接続する相手のIPとポートの両方を入力する必要があり、メッセージを連続的に送信/受信する必要があります。
ただし、プログラムを実行した直後に「ランダム」接続が行われているようです。
エラー:
Please enter the address you would like to connect on: 127.0.0.1
Please enter the port you would like to connect on: 5000
You: Established connection with: ('127.0.0.1', 2811)
なぜポート2811での接続がありますか?まるでプログラムがそれ自身に接続しているかのようです。
コード:
import socket
import threading
LOCALHOST = '127.0.0.1'
BUFFER_SIZE = 1024
def main():
class ChatListener(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.port = None
def run(self):
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.bind((LOCALHOST, self.port))
listen_socket.listen(1)
while True:
connection, address = listen_socket.accept()
print("Established connection with: ", address)
message = connection.recv(BUFFER_SIZE)
print("Them: ", message)
class ChatSender(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.address = None
self.port = None
def run(self):
send_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
send_socket.connect((self.address, self.port))
while True:
message = input("You: ")
if message.lower() == "quit":
break
else:
try:
send_socket.sendall(message)
except:
Exception
ip = input("Please enter the address you would like to connect on: ")
port = int(input("Please enter the port you would like to connect on: "))
chat_listener = ChatListener()
chat_listener.port = port
chat_listener.start()
chat_sender = ChatSender()
chat_sender.address = ip
chat_sender.port = port
chat_sender.start()
if __name__ == "__main__":
main()
あなたはコンストラクタで引数を直接渡すことができました – winklerrr