第XX章java网络编程实验指导书实验目标:掌握套接字相关类的使用,掌握Web相关类的使用。第一部分指导(50分钟)Java.net包提供了支持基于套接字的客户端/服务器通信的类。Socket、ServerSocket、DatagramSocket类可实现用于面向连接的通信和无连接的同喜的客户端和服务器套接字。DatagramPacket类用于构造UDP数据报报文。套接字相关类的使用:以下是一个套接字的程序,在此程序中客户端将向服务器发送请求,而服务器将接收发送给它的请求并将其写入文件。下列程序有用于服务器和客户端程序的代码,客户端程序和服务器程序应该同一机器上运行。在运行FClient程序之前要先运行FServer。完成客户端的步骤如下:1.创建一个具有服务器IP地址和端口号的Socket对象。Socketsoc=newSocket(localhost,4001);2.客户端接受输入。BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));System.out.println(请输入消息至服务器);Stringmessage=;Stringtemp;while(!(temp=br.readLine()).equals(send)){message=message+temp+\n;}3.客户端向服务器发送请求。PrintStreamps=newPrintStream(soc.getOutputStream());ps.print(message);4.关闭PrintStream和Socket对象ps.close();soc.close();下面看一下完整的程序。1.创建FClient.java。并键入下列的代码。importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.Socket;publicclassFClient{publicstaticvoidmain(String[]args)throwsException{Socketsoc=newSocket(localhost,4001);BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));System.out.println(请输入消息至服务器);Stringmessage=;Stringtemp;while(!(temp=br.readLine()).equals(send)){message=message+temp+\n;}PrintStreamps=newPrintStream(soc.getOutputStream());ps.print(message);ps.close();soc.close();}}2.将程序以FClient.java保存完成服务器端程序代码步骤如下:1.ServerSocket对象等待客户端在端口号4001上建立连接。ServerSocketss=newServerSocket(4001);2.一旦客户端建立连接,accept()方法即被调用以接受连接。Socketsoc=ss.accept();3.服务器接受请求。BufferedReaderbr=newBufferedReader(newInputStreamReader(soc.getInputStream()));Stringmessage=;Stringtemp=null;do{temp=br.readLine();if(temp==null){break;}message=message+temp;}while(true);br.close();4.服务器将请求写入文件。PrintStreamps=newPrintStream(newFileOutputStream(message.txt));ps.println(message);ps.close();下面看一下完整的程序。1.创建FServer.java。并键入下列的代码。importjava.io.BufferedReader;importjava.io.FileOutputStream;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;publicclassFServer{publicstaticvoidmain(String[]args)throwsException{ServerSocketss=newServerSocket(4001);Socketsoc=ss.accept();BufferedReaderbr=newBufferedReader(newInputStreamReader(soc.getInputStream()));Stringmessage=;Stringtemp=null;do{temp=br.readLine();if(temp==null){break;}message=message+temp;}while(true);br.close();PrintStreamps=newPrintStream(newFileOutputStream(message.txt));ps.println(message);ps.close();System.out.println(已存储消息);}}2.将程序以FServer.java保存运行程序,A.先运行FServer运行服务器端。B.运行FClient运行客户端在出现消息“输入消息至服务器”后,然后输入下列文本。ThisisanexampleforSocketrelatedclassesWelcometosocketprogram键入send并按下回车键,输入的信息将保存早message.txt文件中。以上程序的输出结果如图1.1和1.2所示。图1.1图1.2第二部分练习(50分钟)修改本阶段的第一部分中完成的程序,是服务器将向客户端返回响应。提示:客户端代码包含下列步骤:a.创建一个具有服务器IP地址和端口号的Socket对象,以创建至服务器的连接。b.客户端接收服务器发送的响应c.在客户端上显示响应d.不安比PrintStream和Socket对象。服务器代码包含下列步骤:a.ServerSocket对象等待客户端在某端口号上建立连接。b.一旦客户端建立连接,accept()方法即被调用以接受连接。c.服务器接收请求。d.编写对客户端的响应。e.关闭服务器和客户端的套接字。客户端代码如下:importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.io.PrintStream;importjava.io.PrintWriter;importjava.net.Socket;publicclassFClient{publicstaticvoidmain(String[]args)throwsException{Socketsoc=newSocket(localhost,4001);System.out.println(ConnectiontoServer);BufferedReaderb=newBufferedReader(newInputStreamReader(System.in));InputStreamin=soc.getInputStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));OutputStreamout=soc.getOutputStream();PrintWriterpw=newPrintWriter(newOutputStreamWriter(out));Stringk=;while(!k.equals(stop)){k=b.readLine();pw.println(k);pw.flush();k=br.readLine();System.out.println(k);}pw.close();br.close();soc.close();}}服务器端代码如下:importjava.io.BufferedReader;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.io.PrintStream;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;publicclassFServer{publicstaticvoidmain(String[]args)throwsException{ServerSocketss=newServerSocket(4001);System.out.println(WaitingforClient);Socketsoc=ss.accept();System.out.println(ConnectiontoClient);InputStreamin=soc.getInputStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(soc.getInputStream()));OutputStreamout=soc.getOutputStream();PrintWriterpw=newPrintWriter(newOutputStreamWriter(out));Stringstr=;while(!str.equals(stop)){str=br.readLine();System.out.println(str);pw.println(str);pw.flush();}pw.close();br.close();}}第三部分作业编写一个类似于聊天的应用程序。应用程序界面如下: