- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布计算实验2
福州大学数学与计算机科学学院
上机实验报告
专业和班级 信息数学02班 姓名 詹小青 成绩 课程名称 分布计算 实验名称 利用组通信函数,实现组通信
实
验
目
的
和
要
求
1.实验目的
(1)学习类与对象的定义。
(2)掌握类与对象的使用方法。
(3)学习数据成员与成员函数的访问方式。
2.实验要求
(1)可以定义出一个类
(2)创建该类的对象
(3)对象的访问
实
验
内
容
和
步
骤
1.实验内容:
编写自己的组播应用。编写一个应用使多个进程使用组通信完成选举。有两个候选人:John和Smith。每个进程通过一个标明自身身份及选票的消息组播自己的选票。每个进程跟踪每个候选人的得票数,也包括自己的得票情况。选举结束时(例如,John 10,Smith 5)。提交你的应用程序清单并回答下列问题:
(1)你的设计是如何允许参与者加入组播组的?
(2)你的设计是如何同步选举开始的,使得每个进程都准备就绪,等待接收组成员发出的任何选票?
2.实验基本步骤:
(1)程序:
import java.io.*;
import java.net.*;
public class send {
public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName(239.1.2.3);
int port = 8888;
MulticastSocket socket = null;
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
String character = br.readLine();
byte[] data = null;
data = character.getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, group,port);
Thread theThread = new Thread(new ReadThread(group, port));
theThread.start();
System.out.println(Hit return when ready to send);
br.readLine();
socket = new MulticastSocket(port);
socket.send(packet);
socket.close();
}
}
class ReadThread implements Runnable
{
static final int MAX_LEN=30;
private InetAddress group;
private int port;
int John=0;
int Smith=0;
public ReadThread(InetAddress group,int port)
{
this.group=group;
this.port=port;
}
public void run()
{
try{
MulticastSocket socket=new MulticastSocket(port);
socket.joinGroup(group);
while(true){
byte[] data=new byte[MAX_LEN];
DatagramPacket packet=new DatagramPacket(data,data.length,group,port);
socket.receive(packet);
String s=new String(packet.getData());
s=s.substring(0, 4);
if(s.equals(John))
System.out.println(John: + ++this.John+\nSmith + this.Smith);
else
System.out.println(John: + this.John+\nSmith + ++this.Smith);
}
}catch(Exception e)
{
e.printSt
您可能关注的文档
- 几种常见Android代码架构分析.docx
- 几种开发的野生植物富硒研究进展.docx
- 几种常见硅酸盐水泥的特性.doc
- 凝结器新铜管腐蚀原因浅析.doc
- 几种常用流行的非编软件.doc
- 几种采能方式探讨发地源热泵.doc
- 几种证明全等三角形添加辅助线的方法.docx
- 凤凰山矿151304工作面相似模拟试验设计.doc
- 凯迪锅炉提纲-0419.doc
- 凯文凯利未来趋势.docx
- 大学生职业规划大赛《新闻学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《应用统计学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《中医学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《信息管理与信息系统专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《水产养殖学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《市场营销专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐表演专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
文档评论(0)