Skip to content

Commit e769722

Browse files
committed
fix
1 parent 3bb47a1 commit e769722

File tree

2 files changed

+83
-41
lines changed

2 files changed

+83
-41
lines changed

client.py

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,50 @@
11
import socket
22
import threading
33

4-
HOST = '127.0.0.1' # آی‌پی سرور
5-
PORT = '65432'
4+
HOST = "127.0.0.1"
5+
PORT = int(input("enter port: "))
66

77
def receive_messages(s):
8-
while True:
9-
data = s.recv(1024)
10-
if not data:
11-
print("Server disconnected")
12-
break
13-
print("Server:", data.decode())
8+
try:
9+
while True:
10+
data = s.recv(1024)
11+
if not data:
12+
print("Server disconnected")
13+
break
14+
print("Server:", data.decode())
15+
except ConnectionResetError:
16+
print("Server closed the connection.")
17+
finally:
18+
s.close()
1419

1520
def send_messages(s):
16-
while True:
17-
msg = input()
18-
s.sendall(msg.encode())
21+
try:
22+
while True:
23+
msg = input("enter msg: ")
24+
if msg.lower() == "exit":
25+
print("Closing connection...")
26+
s.close()
27+
break
28+
s.sendall(msg.encode())
29+
except BrokenPipeError:
30+
print("Cannot send message, server disconnected.")
31+
finally:
32+
s.close()
1933

20-
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
21-
s.connect((HOST, PORT))
22-
print("Connected to server. Type messages:")
34+
def main():
35+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
36+
s.connect((HOST, PORT))
37+
print("Connected to server. Type messages (type 'exit' to quit):")
2338

24-
threading.Thread(target=receive_messages, args=(s,), daemon=True).start()
25-
threading.Thread(target=send_messages, args=(s,), daemon=True).start()
39+
recv_thread = threading.Thread(target=receive_messages, args=(s,), daemon=True)
40+
send_thread = threading.Thread(target=send_messages, args=(s,), daemon=True)
2641

27-
while True:
28-
pass
42+
recv_thread.start()
43+
send_thread.start()
2944

45+
recv_thread.join()
46+
send_thread.join()
47+
print("Client shutting down.")
48+
49+
if __name__ == "__main__":
50+
main()

server.py

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,55 @@
11
import socket
22
import threading
3+
import random
34

4-
HOST = '127.0.0.1'
5-
PORT = '65432'
5+
HOST = "127.0.0.1"
6+
PORT = random.randint(1000,9999)
7+
print("this is a port pls enter to client: ",PORT)
68

79
def receive_messages(conn):
8-
while True:
9-
data = conn.recv(1024)
10-
if not data:
11-
print("Client disconnected")
12-
break
13-
print("Client:", data.decode())
10+
try:
11+
while True:
12+
data = conn.recv(1024)
13+
if not data:
14+
print("Client disconnected")
15+
break
16+
print("Client:", data.decode())
17+
except ConnectionResetError:
18+
print("Connection was closed abruptly.")
19+
finally:
20+
conn.close()
1421

1522
def send_messages(conn):
16-
while True:
17-
msg = input()
18-
conn.sendall(msg.encode())
23+
try:
24+
while True:
25+
msg = input("enter msg: ")
26+
if msg.lower() == "exit":
27+
print("Closing connection...")
28+
conn.close()
29+
break
30+
conn.sendall(msg.encode())
31+
except BrokenPipeError:
32+
print("Cannot send message, client disconnected.")
33+
finally:
34+
conn.close()
1935

20-
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
21-
s.bind((HOST, PORT))
22-
s.listen()
23-
print(f"Server listening on {HOST}:{PORT}")
24-
conn, addr = s.accept()
25-
print('Connected by', addr)
36+
def main():
37+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
38+
server_socket.bind((HOST, PORT))
39+
server_socket.listen()
40+
print(f"Server listening on {HOST}:{PORT}")
41+
conn, addr = server_socket.accept()
42+
print('Connected by', addr)
2643

27-
# دو thread جداگانه برای ارسال و دریافت پیام‌ها
28-
threading.Thread(target=receive_messages, args=(conn,), daemon=True).start()
29-
threading.Thread(target=send_messages, args=(conn,), daemon=True).start()
44+
recv_thread = threading.Thread(target=receive_messages, args=(conn,), daemon=True)
45+
send_thread = threading.Thread(target=send_messages, args=(conn,), daemon=True)
3046

31-
# فقط نگه داشتن سرور باز
32-
while True:
33-
pass
47+
recv_thread.start()
48+
send_thread.start()
3449

50+
recv_thread.join()
51+
send_thread.join()
52+
print("Server shutting down.")
53+
54+
if __name__ == "__main__":
55+
main()

0 commit comments

Comments
 (0)