-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprestador.py
executable file
·72 lines (57 loc) · 1.5 KB
/
prestador.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/python
#Aplicacao prestador
import sys
import os
import socket
import pickle
import time
from rsvpprestador import Rsvpserver
host = '' #Prestador escutando em todas as portas
#port = int(sys.argv[1]) #Porta do prestador obtida atraves da CLI
port = 23000 #Porta do prestador
filetest = 'testfile.mov' #Arquivo de teste
filename=os.getenv("HOME")+'/pox/ext/classes.conf' #Arquivo de lista de objetos Classe
#Carregamento dos dados do arquivo de teste em memoria
filet = open(filetest,'r+b')
bytes = filet.read()
filet.close()
#Carregamento da lista de objetos Classe
classlist = []
if os.path.isfile(filename):
filec = open(filename,'rb')
classlist = pickle.load(filec)
filec.close()
#Inicio da conexao
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((host,port))
sock.listen(5)
print 'Prestador escutando porta',port
conn,addr = sock.accept()
print 'Conectado com',addr
while True:
qos = 0
#Recebimento do tipo de aplicacao
data = conn.recv(4096)
msg = str(data)
print 'Mensagem recebida:',msg
if msg!='FIN':
for c in classlist:
#Classe de servico disponivel
if c.nome==msg:
qos = 1
conn.sendall('RSVP')
Rsvpserver(addr[0],c.id).start() #Inicio do modulo RSVP prestador
conn.sendall(bytes)
print 'Arquivo enviado'
msg='FIN'
break
#Termino da conexao
if msg=='FIN':
break
#Classe de servico nao disponivel
if not qos:
conn.sendall('ACK')
#Encerramento da conexao
print 'Encerrando conexao'
conn.close()
sock.close()