1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| -
|
|
!
-
!
-
!
-
!
-
|
!
-
!
-
!
-
!
-
!
| import socket
import threading
HOST = ''
PORT = 9998
clxa=[] def start_server():
print("start server socket")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((HOST, PORT))
sock.listen(10)
while True:
con,address = sock.accept()
clx=(con,address) clxa.append(clx) print("[connect]{}".format(address))
handle_thread = threading.Thread(target=handler, args=(clx,clxa,))
handle_thread.start()
def handler(clx,clxa):
print("at server, connected, start handler");
con=clx[0] address=clx[1] while True:
try:
data = con.recv(1024) print("[receive]{} - {}".format(address, data.decode("utf-8")))
except socket.error: con.close() try:
clxa.remove(clx) except:
print("no entry when closing")
break
for cx in clxa:
if cx!=clx: try:
cx[0].send(data)
except:
print("failed to "+cx[1])
if __name__ == "__main__":
host = socket.gethostname()
ip = socket.gethostbyname(host)
print(ip) start_server()
|