Я пытаюсь создать одноранговое приложение для сообщений, я понимаю, что каждый экземпляр приложения должен быть и сервером, и клиентом, как я сделал для приведенного ниже кода, но мне интересно, как установить порты, могу ли я отправлять и получать сообщения на один и тот же порт?
Приведенный ниже код является одним экземпляром приложения, я могу общаться с другой версией, но мне нужно установить другую версию для отправки сообщений через порт 9000 и получать сообщения на 6190. В дальнейшем это не сработает. Как будет подключаться третий пользователь?
Текущая ситуация: пользователь 1: получает на 9000, отправляет на 6190 пользователь 2: получает на 6190, отправляет на 9000
import socket
import time
import threading
global incoming
def server_socket(): #call server_socket() in build method?
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 9000))
s.listen(1)
host_name = socket.gethostname()
ip_address = socket.gethostbyname(host_name)
print("IP address is: ", ip_address)
except socket.error as e:
print("Socket Error !!", "Unable To Setup Local Socket. Port In Use")
while True:
conn, addr = s.accept()
incoming_ip = str(addr[0])
data = conn.recv(4096)
data = data.decode('utf-8')
print("message recieved is: ", data)
conn.close()
s.close()
def client_send_message():
message = "Hello World"
message = message.encode('utf-8')
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
c.connect(("127.0.0.1", 6190))
except Exception as e:
print("Connection Refused", "The Address You Are Trying To Reach Is Currently Unavailable")
try:
c.send(message)
except Exception as e:
print(e)
c.close()
t = threading.Thread(target=server_socket)
t.start()
for i in range(5):
time.sleep(30)
client_send_message()