Поэтому, когда я запускаю клиентский модуль, терминал отправляет обратно сообщение об ошибке: «TypeError: требуется объект, похожий на байты, а не 'str'". Я закодировал сообщение, отправленное клиентом, поэтому я не уверен, что не так. Буду признателен за любую помощь в выяснении проблемы!
Вот мой client.py:
import socket
def client_program():
host = socket.gethostname()
port = 5000
client_socket = socket.socket()
client_socket.connect((host, port))
message = input(" -> ")
while message.lower().strip() != 'bye':
client_socket.send(message.encode())
data = client_socket.recv(1024).decode()
print('Received from server: ' + data)
message = input(" -> ")
client_socket.close()
if __name__ == '__main__':
client_program()
Вот мой server.py:
import socket
import sys
from _thread import start_new_thread
HOST = ''
PORT = 5000
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as msg:
print("Could not create socket. Error Code: ", str(msg[0]), "Error: ", msg[1])
sys.exit(0)
print("[-] Socket Created")
try:
s.bind((HOST, PORT))
print("[-] Socket Bound to port " + str(PORT))
except socket.error as msg:
print("Bind Failed. Error Code: {} Error: {}".format(str(msg[0]), msg[1]))
sys.exit()
s.listen(10)
print("Listening...")
def client_thread ( conn): conn.send («Добро пожаловать на сервер. Введите сообщения и нажмите Enter для отправки. \ n»)
while True:
data = conn.recv(1024)
if not data:
break
reply = "OK . . " + data
conn.sendall(reply)
conn.close()
while True:
conn, addr = s.accept()
print("[-] Connected to " + addr[0] + ":" + str(addr[1]))
start_new_thread(client_thread, (conn,))
s.close()