Как клиенты отправляют сообщения друг другу - PullRequest
1 голос
/ 29 мая 2020

Использование сокетов в python Я создал сервер-сервер-сервер сокетов, который просто отправляет сообщения от клиентов на сервер, и я хочу отправлять сообщения между клиентами.

Мой код выглядит так ... .

Server.py

 import socket
 import threading
 import pyaudio


PORT = 5070
HEADER = 64
FORMAT= "utf-8 "
DISCONNECT_MSG="!DISCONNECTED"

 SERVER=socket.gethostbyname(socket.gethostname())
 ADDR = (SERVER,PORT)
 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 server.bind(ADDR)
 connection_list = []
 def handle_clinet(conn,addr):
 print(f"[NEW CONNECTION]{addr} Connected")
 CONNECTED = True

while CONNECTED:





    msg_length = conn.recv(HEADER).decode(FORMAT)
    if msg_length:
        msg_length=int(msg_length)
        msg = conn.recv(msg_length).decode(FORMAT)
        if msg == DISCONNECT_MSG:
            CONNECTED = False

        if msg == "Disconnect":


            conn.close()
            CONNECTED = False
            print("Dissconnected From the User...")
        else:

            print(msg)





def start():
 server.listen()
 while True:
    conn,addr = server.accept()
    thread = threading.Thread(target=handle_clinet,args=(conn,addr))


    thread.start()
    print(f"[ACTIVE CONNECTIONS] {threading.active_count() -1}")
    connection_list.append(addr)
    print(connection_list)


print("[Starting] the server...")
start()

Client.py

import socket
import threading
import pyaudio

PORT = 5070
HEADER = 64
FORMAT= "utf-8 "
DISCONNECT_MSG="!DISCONNECTED"
SERVER=socket.gethostbyname(socket.gethostname())
ADDR = (SERVER,PORT)
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(ADDR)

def send(msg):
  message = msg.encode(FORMAT)
  msg_length = len(message)
  send_length = str(msg_length).encode(FORMAT)
  send_length += b" " *(HEADER - len(send_length))
  client.send(send_length)
  client.send(message)

send("Hello World")
send_more =True
while send_more:
 a = input()
 send(a)
if a =="Disconnect":
    print("!Disconnected From the Server.")

Как видно из вышеизложенного, пожалуйста, предложите какой-нибудь метод для отправки сообщений между клиентами. Какие изменения у меня есть сделать в следующем коде

...