Bonjour
Je dois écrire un programme qui envoie une réponse après un délais de rétention ou il n'envoie pas de réponse du tout avec une probabilité p (le taux de perte d'écho). Le taux de perte est constante.
L'application est une socket DGRAM en mode connecté.
mais je n'arrive pas mettre en place tous cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #!/usr/bin/python # UDP echo application en mode connecte import sys import random from socket import socket, AF_INET6, SOCK_DGRAM #--------------------------------------------------------- host = sys.argv.pop() if len(sys.argv) == 3 else '::1' s = socket(AF_INET6, SOCK_DGRAM) server = (host,1089) rate = 5 if sys.argv[1:] == ['client']: s.connect(server) print "?:" string = sys.stdin.readline() # string=raw_input("?:") # wait an input from keyboard s.send(string) data, addr = s.recv(1024) print "> from: ", addr, "data: ", data elif sys.argv[1:] == ['server']: p=random.random() s.bind(server) if p<=rate: print "packet dropped" continue else: wait=p*6 print "packet delayed" time.sleep(wait) print "waiting....." data, addr = s.recvfrom(1024) print "Request from", addr print " > ", len(data) n=s.sendto(data,addr) else: print >>sys.stderr, 'usage: %s server|client [address]'%(sys.argv[0]) s.close() sys.exit(0)
je me suis basé sur ce programme que j'ai fait avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #!/usr/bin/python # UDP echo application en mode connecte import sys from socket import socket, AF_INET6, SOCK_DGRAM #--------------------------------------------------------- host = sys.argv.pop() if len(sys.argv) == 3 else '::1' s = socket(AF_INET6, SOCK_DGRAM) server = (host,1089) if sys.argv[1:] == ['client']: s.connect(server) print "?:" string = sys.stdin.readline() # string=raw_input("?:") # wait an input from keyboard s.send(string) data, addr = s.recv(1024) print "> from: ", addr, "data: ", data elif sys.argv[1:] == ['server']: s.bind(server) while 1: print "waiting....." data, addr = s.recvfrom(1024) print "Request from", addr print " > ", len(data) n=s.sendto("%d"%len(data), addr) else: print >>sys.stderr, 'usage: %s server|client [address]'%(sys.argv[0]) s.close() sys.exit(0)
Partager