Почему одновременно писать и получать нельзя python socket
import socket
from threading import Thread
import threading
s = socket.socket( socket.AF _INET, socket.SOCK_STREAM)
s.bind(('', 5555))
s.listen(2)
conn, addr = s.accept()
def qq():
while True:
print(conn.send(f'{input()}\n'.encode()))
def ww():
while True:
print(conn.recv(1024).decode('utf-8'))
t = Thread(qq())
tt = Thread(ww())
t.start()
tt.start()
t.join()
tt.join()
Сделал вроде всё правильно, не получает одновременно и получать и писать, сделал как в ютубе многопоточность
Вы передаете результат выполнения функции qq() и ww() в конструктор Thread, а не сами функции. Вам нужно передавать ссылки на функции, а не вызывать их:
t = Thread(target=qq)
tt = Thread(target=ww)
В функции qq() вы вызываете input() для получения пользовательского ввода, который блокирует выполнение программы, если не будет введено значение. Это означает, что поток, отвечающий за отправку данных, будет ждать ввода, что может препятствовать получению данных в другом потоке.
import socket
from threading import Thread
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 5555))
s.listen(2)
conn, addr = s.accept()
def qq():
while True:
message = input("Введите сообщение: ")
conn.send(f'{message}\n'.encode())
def ww():
while True:
data = conn.recv(1024).decode('utf-8')
if not data:
break
print(data)
t = Thread(target=qq)
tt = Thread(target=ww)
t.start()
tt.start()
t.join()
tt.join()
conn.close()
s.close()
Попробуй в неблокирующем режиме это делать