|
1 | 1 | import socket |
2 | 2 | import threading |
| 3 | +import random |
3 | 4 |
|
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) |
6 | 8 |
|
7 | 9 | 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() |
14 | 21 |
|
15 | 22 | 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() |
19 | 35 |
|
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) |
26 | 43 |
|
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) |
30 | 46 |
|
31 | | - # فقط نگه داشتن سرور باز |
32 | | - while True: |
33 | | - pass |
| 47 | + recv_thread.start() |
| 48 | + send_thread.start() |
34 | 49 |
|
| 50 | + recv_thread.join() |
| 51 | + send_thread.join() |
| 52 | + print("Server shutting down.") |
| 53 | + |
| 54 | +if __name__ == "__main__": |
| 55 | + main() |
0 commit comments