-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathq3_servidor.py
57 lines (40 loc) · 1.28 KB
/
q3_servidor.py
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 json
def get_info_peer(cliente):
peer = dict()
peer['ip'] = cliente[0]
peer['port'] = cliente[1]+1
peer['rec_port'] = 0
return peer
def get_rec_port(cliente, peer):
peer['rec_port'] = cliente[1]+1
jpeer = json.dumps(peer)
return jpeer.encode('utf-8')
def send_peer(data, udp, cliente):
return udp.sendto(data, cliente)
def main():
host = ''
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
port = 6007
orig = (host, port)
udp.bind(orig)
while True:
msg, cliente = udp.recvfrom(1024)
if msg.decode('utf-8') == 'Hello':
con1 = get_info_peer(cliente)
udp.sendto('ok'.encode('utf-8'), cliente)
print (cliente, msg.decode('utf-8'))
while True:
msg2, cliente2 = udp.recvfrom(1024)
if msg2.decode('utf-8') == 'Hello':
con2 = get_info_peer(cliente2)
udp.sendto('ok'.encode('utf-8'), cliente2)
print (cliente2, msg2.decode('utf-8'))
break
jpeer1 = get_rec_port(cliente, con2)
jpeer2 = get_rec_port(cliente2, con1)
send_peer(jpeer2, udp, cliente2)
send_peer(jpeer1, udp, cliente)
udp.close()
if __name__ == '__main__':
main()