資源簡介
Python UDP實現可靠傳輸 停等協議

代碼片段和文件信息
import?sys
import?socket
import?random
import?Checksum
‘‘‘
This?is?the?basic?sender?class.?Your?sender?will?extend?this?class?and?will
implement?the?start()?method.
‘‘‘
class?BasicSender(object):
????def?__init__(selfdestportfilenamedebug=False):
????????self.debug?=?debug
????????self.dest?=?dest
????????self.dport?=?port
????????self.sock?=?socket.socket(socket.AF_INET?socket.SOCK_DGRAM)
????????self.sock.settimeout(None)?#?blocking
????????self.sock.bind((‘‘random.randint(1000040000)))
????????if?filename?==?None:
????????????self.infile?=?sys.stdin
????????else:
????????????self.infile?=?open(filename“rb“)
????#?Waits?until?packet?is?received?to?return.
????def?receive(self?timeout=None):
????????self.sock.settimeout(timeout)
????????try:
????????????return?self.sock.recv(4096)
????????except?(socket.timeout?socket.error):
????????????return?None
????#?Sends?a?packet?to?the?destination?address.
????def?send(self?message?address=None):
????????if?address?is?None:
????????????address?=?(self.destself.dport)
????????self.sock.sendto(message?address)
????#?Prepares?a?packet
????def?make_packet(selfmsg_typeseqnomsg):
????????body?=?“%s|%d|%s|“?%?(msg_typeseqnomsg)
????????checksum?=?Checksum.generate_checksum(body)
????????packet?=?“%s%s“?%?(bodychecksum)
????????return?packet
????def?split_packet(self?message):
????????pieces?=?message.split(‘|‘)
????????msg_type?seqno?=?pieces[0:2]?#?first?two?elements?always?treated?as?msg?type?and?seqno
????????checksum?=?pieces[-1]?#?last?is?always?treated?as?checksum
????????data?=?‘|‘.join(pieces[2:-1])?#?everything?in?between?is?considered?data
????????return?msg_type?seqno?data?checksum
????#?Main?sending?loop.
????def?start(self):
????????raise?NotImplementedError
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-03-16?20:58??可靠的Sender\
?????文件????????1768??2014-03-16?15:00??可靠的Sender\BasicSender.py
?????文件?????????458??2014-03-06?16:31??可靠的Sender\Checksum.py
?????文件???????50688??2014-03-06?16:31??可靠的Sender\dfsf.doc
?????文件????????2839??2014-03-16?15:40??可靠的Sender\Sender.py
?????文件??????????93??2014-03-16?14:57??可靠的Sender\命令行.txt
- 上一篇:安裝iverlog和gtkwave
- 下一篇:《Python程序設計》題庫
評論
共有 條評論