Я пытаюсь изучить программирование сокетов и в настоящее время имею следующий код server
и client
, однако проблема в том, что сервер и / или клиент не могут отправлять и получать сообщения одновременно, они по очереди отправляю и получаю сообщения.
Я посмотрел на приведенный ниже пример, но, похоже, ответ не решил проблему, или я неправильно его понимаю.
Python Сокет - отправлять и получать сообщения одновременно
сервер
import socket
import threading
s = socket.socket()
host = socket.gethostname()
port = 8080
s.bind((host, port))
s.listen(1)
print("Waiting for connections")
conn, addr = s.accept()
print("Client has connected")
conn.send("Welcome to the server".encode())
def recv_msg():
while True:
recv_msg = conn.recv(1024)
if not recv_msg:
sys.exit(0)
recv_msg = recv_msg.decode()
print(recv_msg)
def send_msg():
send_msg = input(str("Enter message: "))
send_msg = send_msg.encode()
conn.send(send_msg)
print("message sent")
while True:
send_msg()
t = threading.Thread(target=recv_msg)
t.start()
клиент
import socket
import threading
s = socket.socket()
host = socket.gethostname()
port = 8080
s.connect((host, port))
print("Connected to the server")
message = s.recv(1024)
message = message.decode()
print(message)
def recv_msg():
while True:
recv_msg = s.recv(1024)
if not recv_msg:
sys.exit(0)
recv_msg = recv_msg.decode()
print(recv_msg)
def send_msg():
send_msg = input(str("Enter message: "))
send_msg = send_msg.encode()
s.send(send_msg)
print("Message sent")
while True:
send_msg()
t = threading.Thread(target=recv_msg)
t.start()
Я в конечном итоге пытаюсь создать приложение для чата (с kivy), которое напоминает Whatsapp / Imessage et c, я не нашел учебник о том, как это сделать (все, что я видел, о создании чат), так что если кто-то видел тот, который будет оценен.