Сначала извините за мой английский sh: / Я много раз ищу эту проблему, но не могу найти.
server.py:
import socket
import os
import time
import sys
try:
host=sys.argv[1]
port=sys.argv[2]
os.system("clear")
except IndexError:
print("usage : python3 fserver.py [host] [port]")
exit()
c1="\033[1;31;40m"
c2="\033[1;32;40m"
c3="\033[1;36;40m"
r="\033[m"
try:
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
server.bind((host,int(port)))
server.listen(1)
print(f"{c2}[#]{r} server started on ({c3}{host}~{port}{r}) at {c3}{time.strftime('%H:%M:%S')}{r}")
client,address=server.accept()
print(f"{c2}[#]{r} {c3}{address[0]}{r} connected to server at {c3}{time.strftime('%H:%M:%S')}{r}")
client_name=client.recv(1024).decode()
print(f"{c2}[*]{r} client name : {c3}{client_name}{r}")
except KeyboardInterrupt:
server.close()
print("[*] server closed.")
sys.exit()
except socket.error as err:
print(f"Error : {c1}{err}{r}")
sys.exit()
except OSError as err:
print(f"Error : {c1}{err}{r}")
sys.exit()
def message():
print(f"{c2}[#]{r} starting chat.\n")
while True:
msg=str(input(f"{c2}you{r} > "))
client.send(msg.encode())
msg_c=client.recv(1024).decode()
print(f"{c3}{client_name}{r} > {msg_c}")
def chat():
try:
message()
except KeyboardInterrupt:
print("\nclosing...")
client.close()
sys.exit()
except socket.error as err:
print(f"\nError : {c1}{err}{r}")
client.close()
sys.exit()
def run_server():
try:
chat()
except Exception as err:
print(f"Error : {c1}{err}{r}")
sys.exit()
run_server()
client.py:
import socket
import os
import sys
import time
try:
host=sys.argv[1]
port=sys.argv[2]
nick=sys.argv[3]
os.system("clear")
except IndexError:
print("usage : python3 fclient.py [host] [port] [nick]")
exit()
c1="\033[1;31;40m"
c2="\033[1;32;40m"
c3="\033[1;36;40m"
r="\033[m"
try:
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((host,int(port)))
client.send(nick.encode())
print(f"{c2}[#]{r} connected to server ({c3}{host}~{port}{r})")
except KeyboardInterrupt:
print(f"{c2}[*]{r} stopped.")
sys.exit()
except socket.error as err:
print(f"Error : {c1}{err}{r}")
sys.exit()
except OSError as err:
print(f"Error : {c1}{err}{r}")
sys.exit()
def message():
print(f"{c2}[#]{r} starting chat.\n")
while True:
msg_c=client.recv(1024).decode()
print(f"{c3}server{r} > {msg_c}")
msg=str(input(f"{c2}you{r} > "))
client.send(msg.encode())
def chat():
try:
message()
except KeyboardInterrupt:
print("\nclosing...")
client.close()
sys.exit()
except socket.error as err:
print(f"\nError : {c1}{err}{r}")
client.close()
sys.exit()
def run_client():
chat()
run_client()
Когда вы подключаетесь к серверу и запускаете чат, вы видите, что клиент должен ждать сообщения от сервера, и это происходит, когда сервер отправляет сообщение на сервер. Теперь, как я могу это сделать. Используя проклятия или по-другому?