#!\Python27\python # -*- coding: utf-8 -*- #Εισαγωγή των βιβλιοθηκών για σύνδεση με WEB Server και #εκτέλεση του προγράμματος ως cgi import cgi,cgitb #Υποχρεωτικά πρέπει να σταλεί πρώτα η συγκεκριμένη γραμμή για να #οριστεί ότι το περιεχόμενο είναι html print "Content-type: text/html" print "" #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου menu.html #το οποίο περιέχει τον κώδικα html του μενού def printmenu(): fin=open('menu.html') print fin.read() fin.close() #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου arxiki.html #το οποίο περιέχει τον κώδικα html της αρχικής σελίδας def printarxiki(): fin=open('arxiki.html') print fin.read() fin.close() #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου omada.html #το οποίο περιέχει τον κώδικα html της σελίδας που παρουσιάζει την ομάδα υλοποίησης def printomada(): fin=open('omada.html') print fin.read() fin.close() #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου form.html #το οποίο περιέχει τον κώδικα html της σελίδας που έχει την φόρμα def printform(): fin=open('form.html') print fin.read() fin.close() #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου header.html #το οποίο περιέχει τον κώδικα html της σελίδας που έχει την επικεφαλίδα της σελίδας def printheader(): fin=open('header.html') print fin.read() fin.close() #Συνάρτηση που ανοίγει και τυπώνει τα περιεχόμενα του αρχείου footer.html #το οποίο περιέχει τον κώδικα html της σελίδας που έχει τo υποσέλιδο της σελίδας def printfooter(): fin=open('footer.html') print fin.read() fin.close() #Συνάρτηση που παίρνει παράμετρο τα δεδομένα που αποστέλει ο πελάτης (με τη φόρμα), #παίρνει τις τιμές των πεδίων και εκτελεί τον αλγόριθμο της Κατάτμησης τυπώνοντας τα αποτελέσματα def katatmisi(dt): errormsg = "" sdm=dt.getvalue('sdm') if sdm=='1': #Έλεγξε αν συμπληρώθηκε το πεδίο συνολικό μήκος if dt.getvalue('smikos')!= None: #Πάρε το συνολικό μήκος sinmikos=int(dt.getvalue('smikos')) #Παρε το μηκος επικεφαλιδας ihl=int(dt.getvalue('mepik')) ihlbytes=ihl*4 mikosded=sinmikos-ihlbytes else: #Αν δεν συμπληρώθηκε θέσε το μήνυμα λάθους errormsg = "
Πρέπει να συμπληρωθεί το πεδίο Συνολικό Μήκος
" else: #Έλεγξε αν συμπληρώθηκε το πεδίο Μήκος Δεδομένων if dt.getvalue('mikosded')!= None: mikosded=int(dt.getvalue('mikosded')) ihl=int(dt.getvalue('mepik')) ihlbytes=ihl*4 sinmikos=mikosded+ihlbytes else: #Αν δεν συμπληρώθηκε θέσε το μήνυμα λάθους errormsg = "Πρέπει να συμπληρωθεί το πεδίο Μήκος Δεδομένων" #Αν έχουμε λάθος (δεν συμπληρώθηκε κάποιο πεδίο που έπρεπε) βγάλε μήνυμα λάθους και σταμάτα if errormsg != "": print "", errormsg, "
" return #Αν όλα πήγαν καλά συνέχισε με τα υπόλοιπα πεδία mtu=int(dt.getvalue('mtu')) df=int(dt.getvalue('df')) anagn=dt.getvalue('anagn') #Αν DF=1 δεν γίνεται Κατάτμηση οπότε βγάλε μήνυμα ενημέρωσης και σταμάτα if df==1: print "Δεν επιτρέπεται ο τεμαχισμός (DF=1)
" return #Αν DF=1 δεν γίνεται Κατάτμηση οπότε βγάλε μήνυμα ενημέρωσης και σταμάτα if sinmikos <= mtu: print "Δεν χρειάζεται ο τεμαχισμός (το πακέτο χωράει)
" return #Αν όλα πήγαν καλά συνέχεισε και τύπωσε αποτελέσματα #Υπολογισμός Payload Lenght pll=int((mtu-ihl*4)/8) pllbytes =pll*8 #Υπολογισμός Αριθμού Τμημάτων artm=mikosded/float(pllbytes) artmint=int(artm) #Αν δεν είναι ακέραιος πρόσθεσε +1 τμήμα if artm > artmint: artmint +=1 print "Τμήμα | Μήκος Επικεφαλίδας (4άδες bytes) | Συνολικό μήκος (bytes) | Μήκος Δεδομένων bytes) | Αναγνώριση | DF | MF | Σχετική θέση τμήματος (8άδες bytes) | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
',i,' | ' print '',ihl,' | ' #Αν δεν είναι το τελευταίο τμήμα if i != artmint: print '',pllbytes+ihlbytes,' | ' print '',pllbytes,' | ' else: #Αν είναι το τελευταίο τμήμα print '',mikosded- (artmint-1)*pllbytes+ihlbytes,' | ' print '',mikosded- (artmint-1)*pllbytes,' | ' #Αν δεν έχει δοθεί πεδίο αναγνώρισης if anagn==None: print 'Ίδιο με το αρχικό | ' else: print '',anagn,' | ' print '',df,' | ' #Αν είναι το τελευταίο τμήμα τύπωσε MF=0 if i==artmint: print '0 | ' else: #Αν δεν είναι τύπωσε MF=1 print '1 | ' #Τύπωσε τη Σχετική Θέση Τμήματος print '',(i-1)*pll,' | ' print '
Δεν υπάρχει η σελίδα που ζητάτε. Παρακαλώ χρησιμοποιείστε το μενού.
" printfooter()