分布式实验报告
- 格式:pdf
- 大小:593.81 KB
- 文档页数:18
实验一、基于TCP的套接字编程
一、实验目的
用C或JAVA语言编写客户端、服务器端程序,实现基于TCP或UDP
的网络通信或数据传输服务,熟悉基于TCP或UDP的Socket编程原
理。
二、实验环境
建立在TCP/IP网络结构之上计算机网络实验环境。计算机具备
Windows环境中套接字socket的编程接口功能,可为用户提供全网范
围的进程通信功能。
三、实验要求
要求学生使用Linux或Windows平台下的套接字实现方式完成TCP客
户端与服务器端的通信实现,无界面化要求,功能实现即可。
四、实验内容
基于TCP的socket编程的大致实现过程如下--
1、编写服务器端程序如下:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception{
ServerSocket server=null;
Socket client=null;
server=new ServerSocket(8888);
client=server.accept();
PrintWriter out=null;
out=new PrintWriter(client.getOutputStream());
out.println("Hello 阙凤林!");
out.close();
client.close();
server.close();
}
}
2、编写客户端程序如下:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args)throws Exception {
Socket client=null;
BufferedReader buf=null;
client=new Socket("localhost",8888);
buf=new BufferedReader(new
InputStreamReader(client.getInputStream()));
System.out.println();
System.out.println(buf.readLine());
buf.close();
client.close(); }}
3、在DOS命令行下分别编译上述.java文件,生成对应的.class文
件,如下图所示:
4、打开主机端口:在“运行”框中输入Telnet,进入如下画面:
5、键入o localhost 8888 执行完上述结果后得到下图所示界面:
6、最后重新打开一个界面(服务器server保持运行状态),输入cmd,
执行客户端程序,得到运行结果如下:
实验二、一个RMI实例开发
一、实验目的
用C或JAVA语言编写客户端、服务器端程序,模拟实现不同操作系
统之间程序的方法调用。通过本实验,熟悉基于RMI的编程原理。
二、实验环境
建立在TCP/IP网络结构之上计算机网络实验环境。计算机具备
Windows环境中远程方法调用RMI的编程接口功能,可为用户提供全
网范围的进程通信功能。
三、实验要求
要求学生在Linux或Windows平台下完成客户端与服务器端的远程方
法调用,无界面化要求,功能实现即可。
四、实验内容
实现RMI分布式程序的大致过程如下:
1、自定义一个远程接口-----远程接口类,实现两个数的加法运算,
程序如下:
import java.rmi.*;
import java.rmi.server.*;
public interface AddServer extends Remote
{
public int addData(int a,int b)throws RemoteException;
}
2、定义和实现服务器中远程方法-----服务器类,程序如下:
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject
implements AddServer
{
public AddServerImpl()throws RemoteException
{
super();
}
public int addData(int a,int b)throws RemoteException
{
return a+b;
}
public static void main(String s[])
{ try
{
AddServerImpl instance=new AddServerImpl();
Naming.rebind("add",instance);
System.out.println("Server
Registered");
}
catch(Exception e){System.out.println(e);}
}
}
3、定义与实现客户-----客户类,程序如下:
import java.io.*;
import java.rmi.*;
public class AddClient
{
public AddClient()
{
try
{
BufferedReader input=new
BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter first
number:");
System.out.flush();
String s=input.readLine();
int num1=Integer.parseInt(s);
System.out.println("Please enter second
number:");
System.out.flush();
s=input.readLine();
int num2=Integer.parseInt(s);
AddServer
addserver=(AddServer)Naming.lookup("rmi://127.0.0.1/add");
int i=addserver.addData(num1,num2);
System.out.print("Result is:"+i);
}catch(Exception e){System.out.println(e);}
}
public static void main(String s[])
{
new AddClient();
}
}
4、编译上述三个文件,得到相应的.class文件。
使
用rmci编译器,生成残根和框架代码。
5、创建安全策略。
6、启动RMI远程注册表。
7、启动服务器。
上述五步在dos命令行中执行过程如下图示:
8、启动客户端。
实验三:IP组播通信
一、实验目的
了解组播通信的原理,用C或JAVA语言编写一个简单的IP组播通信
程序,实现基于TCP或UDP的网络通信或数据传输服务。
二、实验环境
建立在TCP/IP网络结构之上计算机网络实验环境。
实验操作系统:windows7
开发工具:Microsoft Visual Studio 2008
三、实验要求
要求学生在Linux或Windows平台下完成IP组播通信的实现,无界
面化要求,功能实现即可。
四、实验内容
编写实验代码如下:
1、主程序入口点代码:(Program.cs) using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Multicast {static class Program
{/// 应用程序的主入口点。
[STAThread]
static void Main()
{ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Multicast());}
}
}
2、IP组播通讯的具体实现代码:(Groupcast.cs) using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Linq;
using System.Text;
using System.Windows.Forms;
//添加多线程
using System.Threading; namespace Multicast
{ public partial class Multicast : Form
{public Multicast()
{InitializeComponent();
//禁用跨线程调用检查 TextBox.CheckForIllegalCrossThreadCalls = false;}
/// 组播对象
private GroupCast groupCast = new GroupCast();
/// 接收线程
private Thread receiver; /// 加入组播组