《网络编程技术》实验指导书第二部分软121蔡钺122573.docx
- 文档编号:6325285
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:49
- 大小:1.70MB
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx
《《网络编程技术》实验指导书第二部分软121蔡钺122573.docx》由会员分享,可在线阅读,更多相关《《网络编程技术》实验指导书第二部分软121蔡钺122573.docx(49页珍藏版)》请在冰豆网上搜索。
《网络编程技术》实验指导书第二部分软121蔡钺122573
实验六:
URL网络程序设计
实验目的:
掌握URL类的使用:
URL的概念和编程。
实验要求:
1、掌握网络编程的基本概念。
2、掌握URL类的简单应用。
3、利用URL类与URLConnection类获取资源。
实验内容:
1、用Java实现底层网络通讯
下面的语句利用主机名找到网络中相应的计算机的IP地址并打印出来。
程序中用到了InetAddress类,它主要用来区分计算机网络中的不同节点,即不同的计算机并对其寻址。
importnet.*;
publicclassMyIpAdress
{
publicstaticvoidmain(Stringargs[])
{
try{
if(arg.Length==1)
{
InetAdressipa=InetAddress。
GetByName(args[0]);
System.Out.println(“Hostname:
”+ipa.GetHostName());
System.out.println(“HostIPAddress:
”+ipa.toString());
System.out.println(“Localhost:
”+InetAddress.getLocalHost());
}
else
system.out.println(“Error,exceptahodtnameascommandineparameter.”);
}
catch(UnknownExceptione)
{
system.out.println(e.toString());
}
}
}
编译并运行程序。
2、获取URL信息,源代码如下:
import.*;
importjava.io.*;
publicclassURLTest{
publicstaticvoidmain(String[]args){
URLurl=null;
InputStreamis;
try{
url=newURL("http:
//localhost/index.html");
is=url.openStream();
intc;
try{
while((c=is.read())!
=-1)
System.out.print((char)c);
}catch(IOExceptione){
}finally{
is.close();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
System.out.println("文件名:
"+url.getFile());
System.out.println("主机名:
"+url.getHost());
System.out.println("端口号:
"+url.getPort());
System.out.println("协议名:
"+url.getProtocol());
}
}
编译并运行程序。
3、利用URL类获取网络资源,源代码如下:
import.*;
importjava.io.*;
publicclassURLReader{
publicstaticvoidmain(String[]args)throwsException{
URLweb=newURL("http:
//166.111.7.250:
2222/");
BufferedReaderin=newBufferedReader(newInputStreamReader(web.openStream()));
StringinputLine;
while((inputLine=in.readLine())!
=null)System.out.println(inputLine);
in.close();
}
}
编译并运行程序。
4、利用URLConnection对URL资源的读取,源代码如下:
import.*;
importjava.io.*;
publicclassURLConnectionReader{
publicstaticvoidmain(String[]args)throwsException{
URLweb=newURL("http:
//166.111.7.250:
2222/");
URLConnectionwebc=web.openConnection();
//getaninstanceofURLConnection
BufferedReaderin=newBufferedReader(newInputStreamReader(
webc.getInputStream()));//useofURLConnection
StringinputLine;
while((inputLine=in.readLine())!
=null)System.out.println(inputLine);
in.close();
}
}
编译并运行程序。
5、掌握URLConnection对URL资源的写入,源代码如下:
importjava.io.*;
import.*;
publicclassReverse{
publicstaticvoidmain(String[]args)throwsException{
if(args.length!
=1){
System.err.println("Usage:
javaReversestring_to_reverse");
System.exit
(1);
}
StringstringToReverse=args[0];
URLurl=newURL("
URLConnectionconnection=url.openConnection();
connection.setDoOutput(true);
PrintWriterout=newPrintWriter(connection.getOutputStream());
out.println("string="+stringToReverse);
out.close();
BufferedReaderin=newBufferedReader(newInputStreamReader(
connection.getInputStream()));
StringinputLine;
while((inputLine=in.readLine())!
=null)System.out.println(inputLine);
in.close();
}
}
编译并运行程序。
实验七:
使用TCP协议的Socket网络程序设计
实验目的:
掌握Socket通讯机制,掌握Socket和ServerSocket类和相关方法。
实验要求:
通过Socket编程,掌握网络应用程序的开发方法;掌握利用Java提供的基本组件进行网络传输;掌握Java提供的多线程机制,异常处理机制和低层对协议的通信机制,通过Socket编程,掌握网络应用程序的开发方法。
实验内容:
1、创建服务器和客户程序,在运行客户程序的计算机上输入的内容,可以在服务器屏幕上看到。
●服务器端源程序
importjava.io.*;
import.*;
publicclassServerClient
{
publicServerClient(intport)
{
Serverserver=newServer(port);
server.start();
Clientclient=newClient(port);
client.start();
}
publicstaticvoidmain(String[]args)
{
newServerClient(7777);
}
}
//服务器线程
classServerextendsThread
{
//使用端口号
intport;
ServerSocketserver;
Socketsocket;
//服务器输出流
DataOutputStreamoutStream=null;
//服务器输入流
DataInputStreaminStream=null;
publicServer(intport)
{
try
{
this.port=port;
server=newServerSocket(port);
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
publicvoidrun()
{
try
{
//监听用户连接
socket=server.accept();
outStream=newDataOutputStream(socket.getOutputStream());
inStream=newDataInputStream(socket.getInputStream());
//服务器准备好,可以进行通讯
System.out.println("serverisok,pleasecontinue!
");
while(true)
{
//读取从客户端发送的信息
Stringstr=inStream.readUTF();
System.out.println("TheserverreceiveString:
"+str);
//将信息重新向客户端发送
outStream.writeUTF(str);
}
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
}
classClientextendsThread
{
//指定通讯端口
intport;
Socketsocket;
DataInputStreaminStream=null;
DataOutputStreamoutStream=null;
publicClient(intport)
{
try
{
this.port=port;
//建立同本地机子的socket连接
socket=newSocket(InetAddress.getLocalHost(),port);
inStream=newDataInputStream(socket.getInputStream());
outStream=newDataOutputStream(socket.getOutputStream());
//客户端准备好,可以进行通讯
System.out.println("clientisok,pleasecontinue!
");
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
publicvoidrun()
{
try
{
while(true)
{
byte[]b=newbyte[1024];
Stringstr="";
//从键盘读取字符串
intm=System.in.read(b);
str=newString(b,0,0,m-1);
//向服务器发送信息
outStream.writeUTF(str);
//从服务器读取信息
str=inStream.readUTF();
System.out.println("TheclientreceiveString:
"+str);
}
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
}
●客户端源程序
import.*;
importjava.io.*;
publicclassSocketClient
{
Sockets=null;
DataInputStreaminStream=null;
DataOutputStreamoutStream=null;
publicSocketClient()
{
try{
init();
waitData();
}catch(Exceptione)
{
System.out.println(e.toString());
}
}
voidinit()throwsException
{
s=newSocket("10.15.43.216",8765);
inStream=newDataInputStream(s.getInputStream());
outStream=newDataOutputStream(s.getOutputStream());
s.setSoTimeout(3000);
}
voidwaitData()
{
while(true)
{
try
{
Stringstr=inStream.readUTF();
System.out.println("Clientaccept:
"+str);
str=Integer.toString(Integer.parseInt(str)+1);
outStream.writeUTF(str);
}
catch(Exceptione)
{
System.out.println(e.toString());
break;
}
}
}
publicstaticvoidmain(String[]args)
{
newSocketClient();
}
}
编译并运行程序。
2、使用ServerSocket类和Socket类实现按如下协议通信的服务器端和客户端程序。
服务器程序的处理规则如下:
1)向客户端程序发送VerifyingServer!
。
2)若读口令次数超过3次,则发送IllegalUser!
给客户端,程序退出。
否则向下执行步骤3)。
3)读取客户端程序提供的口令。
4)若口令不正确,则发送PassWordWrong!
给客户端,并转步骤2),否则向下执行步骤5)。
5)发送RegistrationSuccessful!
给客户端程序。
客户端程序的处理规则如下:
1)读取服务器反馈信息。
2)若反馈信息不是VerifyingServer!
,则提示ServerWrong!
,程序退出。
否则向下执行步骤3)这里偷懒了,没写
应该在client里的
3)if(!
str.equals("RegistrationSuccessful!
"))
4){///////////////////////////
5)byte[]b=newbyte[512];
6)intm=System.in.read(b);
7)str=newString(b,0,0,m-1);
8)outStream.writeUTF(str);
9)}
加上if(str.equals(“VerifyingServer!
”)){}
Elsestr=”ServerWrong”;outStream.writeUTF(str);break;
再在Server里加入检测”ServerWrong”并break的判断
10)提示输入PassWord并将输入的口令发送给服务器。
11)读取服务器反馈信息。
12)若反馈信息是IllegalUser!
,则提示IllegalUser!
,程序退出。
否则向下执行步骤6)
13)若反馈信息是PassWordWrong!
,则提示PassWordWrong!
,并转步骤3),否则向下执行步骤。
14)输出RegistrationSuccessful!
。
packageJAVA实验七;
importjava.io.*;
import.*;
publicclassMyServerextendsThread{
intport;
ServerSocketserver;
Socketsocket;
DataOutputStreamoutStream=null;
DataInputStreaminStream=null;
publicMyServer(intport)throwsIOException
{
try
{
this.port=port;
server=newServerSocket(port);
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
publicvoidrun()
{
intlimit=0;booleansucceedflag=false;
try
{
socket=server.accept();
outStream=newDataOutputStream(socket.getOutputStream());
inStream=newDataInputStream(socket.getInputStream());
Stringstr="VerifyingServer";
System.out.println("serverisready,plzcontinue");
outStream.writeUTF(str);
while(limit<3)
{
//outStream.writeUTF(str);//verifyingserver
str=inStream.readUTF();//读取口令
System.out.println("Serverreceiver:
"+str);
if(str.equals("password\r"))
{
str="RegistrationSuccessful!
";
outStream.writeUTF("RegistrationSuccessful!
");
succeedflag=true;
break;
}
else
{
str="PassWordWrong!
";
outStream.writeUTF("PassWordWrong!
");
limit=limit+1;
}
}
if(succeedflag)
{
System.out.println("RegistrationSuccessful!
");
}
else
{
System.out.println("IllegalUser!
");
}
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
publicstaticvoidmain(Stringargs[])
{
try
{
MyServerms=newMyServer(4567);
MyClientmc=newMyClient(4567);
ms.start();
mc.start();
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
}
packageJAVA实验七;
importjava.io.*;
import.*;
publicclassMyClientextendsThread
{
intport;
Socketsocket;
DataOutputStreamoutStream=null;
DataInputStreaminStream=null;
publicMyClient(intport)
{
try
{
this.port=port;
socket=newSocket(InetAddress.getLocalHost(),port);
inStream=newDataInputStream(socket.getInputStream());
outStream=newDataOutputStream(socket.getOutputStream());
System.out.println("Clientisready,plzcontinue");
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
@SuppressWarnings("deprecation")
publicvoidrun()
{
try
{
while(true)
{
this.sleep(1000);
Stringstr="";
str=inStream.readUTF();
System.out.println("Clientreceive:
"+str);
if(!
str.equals("RegistrationSuccessful!
"))
{
byte[]b=newbyte[512];
intm=System.in.read(b);
str=newString(b,0,0,m-1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络编程技术 网络 编程 技术 实验 指导书 第二 部分 121 蔡钺 122573