Я пытаюсь создать простой чат-сервер. Мне удалось отправить информацию на сервер через клиент, используя «client.send()», но я не могу сделать то же самое server- > client
Я пытался использовать такие методы, как conn.send() и conn.sendall(), но (я думаю, поскольку код находится в попытке) они, кажется, пропускаются после начального conn.send(str.encode("Connected" ))
Код сервера
import socket
from _thread import *
import sys
server = "192.168.0.4"
port = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((server, port))
except socket.error as e:
str(e)
s.listen(2)
print("Waiting for a connection, Server Started")
def threaded_client(conn):
conn.send(str.encode("Connected"))
reply = ""
while True:
conn.send(str.encode(str(reply)))
try:
data = conn.recv(2048*1)
reply = data.decode("utf-8")
if not data:
print("Disconnected")
break
else:
print("Received: ", reply)
print("Sending : ", reply)
conn.sendall(str.encode(reply)) #Where I want to send information to the client
except:
break
print("Lost connection")
conn.close()
while True:
conn, addr = s.accept()
print("Connected to:", addr)
start_new_thread(threaded_client, (conn,))
код клиента
import socket
class Network:
def __init__(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server = "192.168.0.4"
self.port = 5555
self.addr = (self.server, self.port)
self.id = self.connect()
print(self.id)
def connect(self):
try:
self.client.connect(self.addr)
return self.client.recv(2048).decode()
except:
pass
def send(self, data):
try:
self.client.send(str.encode(data))
return self.client.recv(2048).decode()
except socket.error as e:
print(e)
from network import Network
n = Network()
while True:
n.send("sending stuff") #this works/sends properly
Вы забыли использовать print()
для отображения данных с сервера
while True:
print( n.send("sending stuff") )
Кстати: на сервере вы отправляете одни и те же данные два раза - с conn.send()
и conn.sendall()
ты забыл его показать
print( n.send("sending stuff") )