《网络编程技术》实验指导书第二部分软121蔡钺122573.docx

上传人:b****6 文档编号:6325285 上传时间:2023-01-05 格式:DOCX 页数:49 大小:1.70MB
下载 相关 举报
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx_第1页
第1页 / 共49页
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx_第2页
第2页 / 共49页
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx_第3页
第3页 / 共49页
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx_第4页
第4页 / 共49页
《网络编程技术》实验指导书第二部分软121蔡钺122573.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

《网络编程技术》实验指导书第二部分软121蔡钺122573.docx

《《网络编程技术》实验指导书第二部分软121蔡钺122573.docx》由会员分享,可在线阅读,更多相关《《网络编程技术》实验指导书第二部分软121蔡钺122573.docx(49页珍藏版)》请在冰豆网上搜索。

《网络编程技术》实验指导书第二部分软121蔡钺122573.docx

《网络编程技术》实验指导书第二部分软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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1