- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
它必须没有任何命令行的参数
Java 要求:
该程序需使用socket level primitives 并通过UDP 协议在各个子部分中进行交流,程序中必
须包含 5 个 classes: Client, Store, Bank, Content 和 NameServer, 即包含有文件
Client.java, Store.java, Bank.java, Content.java 和 NameServer.java. 每个class 里必须
包含有publice static void main (String args[]).
所有的交流必须是基于 UDP 协议。要确保在各个应用层之间沟通的可靠性。例如:发
送方需要为单个消息设定超时(timeout )如果确认信息(ACK )的到达以及转播超过
时间限定。接收方需要对收到的信息进行反馈确认。你应该只允许使用一个端口来发送
和接收UDP 消息。(one port one process )例如:你不能让client 连接到server 通过
server 的UDP 端口,server 应该创建一个新的UDP 端口并且发送消息到client 。端口
号应该是用过系统自动分配的。例如:所有的过程都不能指定端口号。(除了NameServer)
可以通过多线程来实现沟通的可靠性。例如:一个发送的过程可能创建一个单独的线程
来对超时信息作出反馈并且重新发送需要的数据包。这个线程使用相同的端口就像这个
线程实体化一样。(The thread uses the same port as the process that instantiated
the thread. )
在局域网中测试你的程序的可靠性以及不丢失任何数据包,假装数据包丢失去测试已知
的可靠性是必要的。使用随机数字生成器并且基于生成的数据去决定数据包是否丢失。
以下的伪代码展示了怎么去模拟数据包丢失:
generate uniform random number x from 0 to1;
if(x=0.5) transmit packet;
set timout
以下是各个部分的详细要求:
Name Server:
Name Server 必须满足以下需求:
它必须没有任何命令行的参数
It must have no command line argument.
NameServer
如果参数不是期望中的数字,你的程序应该print以下错误信息(standard error )
并且退出程序,退出状态为1
使用“15032”作为Name Server 的端口号。
Name Server 应该能够收听从其他过程中进来的连接的端口号。如果Name Server
不能收听已给的端口号,应该print 以下错误信息(standard error )并且退出:
“Cannot listen on given port number port\n” 其中port 应该被连接进来的端
口号取代。
Name Server print 以下错误信息(standard error)并且等待进来的连接在给
定的端口号上listening port 如果能够收听该端口。
“Name Server waiting for incoming connections …\n”
Name Server应该能够接受两种形式的消息:查找信息以及注册信息。(注:
消息的命名不需要如此)
如果接收一个有效的注册请求,Name Server可以将名字存入地址映像中。
(Name, IP 和 Port )你应该假设每个服务器有一个独有的名字。例如:永远
不会出现两个不同的服务器有着相同的名字同时运行的情况。
如果接收一个有效的查找请求,Name Server会在已注册的服务器列表中寻找
该服务器。如果不能找到该服务器名称,Name Server会反馈一个错误信息:
“Error: Process has not registered with the Name Server\n”, 该信息会发送回
连接的过程。
Name Server必须能够处理连接的客户端发送的垃圾数据,(例如:并不是Name
Server期望的形式)处理方法是关闭该连接。Name Server并不希望退出程序,
除非遇到连接以外的问题。(例如:内存耗尽)这些情况并不需要在你程序中
测试。
Store
S
文档评论(0)