JAVA实验-综合应用实验.docx_第1页
JAVA实验-综合应用实验.docx_第2页
JAVA实验-综合应用实验.docx_第3页
JAVA实验-综合应用实验.docx_第4页
JAVA实验-综合应用实验.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2014年12月05日学院计算机科学与教育软件学院年级/专业/班姓名学号实验课程名称Java语言成绩实验项目名称综合应用实验指导老师樊志平1、 实验目的实验十三 网络编程(1)1. 掌握使用Socket类的属性和基本方法,2. 掌握使用ServerSocket类的方法实验十四 网络编程(2)1. 掌握使用DatagramSocket类的属性和基本方法,2. 掌握使用DatagramPacket类的方法二、实验器材1.MacBook Pro一台2.操作系统:OS X Yosemite3.编程软件:eclipse三、实验内容及原理实验十三 网络编程(1)1 掌握使用使用Socket、ServerSocket类的方法。一使用Socket、ServerSocket服务器端程序设计模型(1) 在服务器端,先创建类ServerSocket的实例对象,注册在服务器端进行连接的端口号以及允许连接的最大客户数目。(2) 调用类ServerSocket的成员方法accept来等待客户端的连接,当有客户端与服务器端建立连接时,accept方法将返回连接通道在服务器端的套接字。通过该套接字可以与客户端进行数据通信(3) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入流(InputStream)和输出流(OutputStream)(4) 通过输入流(InputStream)和输出流(OutputStream)与客户端进行数据通信,处理从客户端获得的数据以及需要向客户端发送数据(5) 通信完毕后,关闭输入流和输出流和套接字客户端(1) 创建类Socket的实例对象,与服务器建立连接,在建立实例对象时须指定服务器端的主机名和端口号,主机名和端口号必须完全匹配才能建立连接(2) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入流(InputStream)和输出流(OutputStream)(3) 通过输入流(InputStream)和输出流(OutputStream)与客户端进行数据通信,处理从客户端获得的数据以及需要向客户端发送数据(4) 通信完毕后,关闭输入流和输出流和套接字实验十四 网络编程(2)1掌握使用使用DatagramSocket、DatagramPacket类的方法。一 使用DatagramSocket、DatagramPacket(1) 在服务器端,先创建类DatagramSocket的实例对象,注册在服务器端进行连接的端口号。等待客户程序的请求(2) 创建据报的缓冲区,调用DatagramPacket创建接受数据包(3) 调用类DatagramSocket的成员方法receive来接受客户端的数据,并获取客户端IP地址和端口(4) 创建包含发送数据和向给定IP地址和端口发送的应答数据包;(5) 调用类DatagramSocket的成员方法send来发送数据报(6) 通信完毕后,关闭UDPDaytimeServer并退出;客户端(1) 创建类DatagramSocket的实例对象(2) 创建请求和应答缓冲区,调用DatagramPacket创建发送数据包,在创建数据包时须指定服务器端的主机名和端口号,和需要发送的数据与数据长度(3) 调用类DatagramSocket的成员方法send来发送请求(4) 调用类DatagramSocket的成员方法receive来接受数据报(5) 通信完毕后,关闭输入流和输出流和套接字四、实验过程原始数据记录实验十三 网络编程(1)1.使用ServerSocket编写一个时间服务器程序,它能够向客户程序发送以下格式的时间信息。时间格式为:Sat Jan 15 10:45:20 CST 2005(1) 服务器端JTimeServer.javaimport .*;import java.io.*;import java.util.*;public class DaytimeServer public static void main(String args) ServerSocket timeSocket; Socket clientSocket; OutputStream out; Date currDate; if(args.length1) System.out.println(Usage: java DaytimeServer port); System.out.println(Example: java DaytimeServer 1234); System.exit(-1); try timeSocket = new ServerSocket(Integer.parseInt(args0); System.out.println(时间服务器已经启动,正在侦听断口+args0+.); try while(true) clientSocket = timeSocket.accept(); try out = clientSocket.getOutputStream(); currDate = new Date(); out.write(currDate.toString().getBytes(); System.out.println(服务器时间 + currDate + 已经发送到+ clientSocket.getInetAddress(); finally clientSocket.close(); finally timeSocket.close(); catch(IOException ex) System.out.println(ex); catch(NumberFormatException e) System.out.println(illeagl port +args0); System.exit(0); (2)客户端DaytimeClient.javaimport .*;import java.io.*;public class DaytimeClient public static void main(String args) String serverName; String serverPort=1234; InetAddress serverAddress; String inBuffer; Socket daytimeSocket; BufferedReader socketIn; if(args.lengthc&a+cb&b+ca) out.writeDouble(a); out.writeDouble(b); out.writeDouble(c); else inputA.setText(你输入的3个数不构成三角形); catch(Exception ee) inputA.setText(请输入数字字符); public static void main(String args) Client win=new Client(); (2)服务器端程序import java.io.*;import .*;import java.util.*;public class Server public static void main(String args) ServerSocket server=null; ServerThread thread; Socket you=null; while(true) try server=new ServerSocket(4331); catch(IOException e1) System.out.println(正在监听); try you=server.accept(); System.out.println(客户的地址:+you.getInetAddress(); catch (IOException e) System.out.println(正在等待客户); if(you!=null) new ServerThread(you).start(); else continue; class ServerThread extends Thread Socket socket; DataOutputStream out=null; DataInputStream in=null; String s=null; ServerThread(Socket t) socket=t; try in=new DataInputStream(socket.getInputStream(); out=new DataOutputStream(socket.getOutputStream(); catch (IOException e) public void run() while(true) double a=0,b=0,c=0,area=0; try a=in.readDouble(); b=in.readDouble(); c=in.readDouble(); double p=(a+b+c)/2.0; area=Math.sqrt(p*(p-a)*(p-b)*(p-c); out.writeDouble(area); catch (IOException e) System.out.println(客户离开); break; 运行结果:服务器:客户端:实验十四 网络编程(2)1.使用DatagramSocket编写一个时间服务器程序,它能够向客户程序发送以下格式的时间信息。时间格式为:Sat Jan 15 10:45:20 CST 2005算法提示: 打开一个数据报DatagramSocket;开始循环: 创建客户程序请求数据报的缓冲区并等待请求; 当接收到请求时获取发送者(即客户程序)的IP地址和端口; 创建包含当前日期和时间信息,可向给定IP地址和端口发送的应答数据包; 发送上述应答数据包;结束循环;关闭UDPDaytimeServer并退出;(1)服务器端程序import .*;import java.io.*;import java.util.*;public class UDPDaytimeServer public static void main(String args) DatagramSocket timeSocket; Date currDate; byte inBuffer; byte outBuffer; DatagramPacket request; DatagramPacket reply; InetAddress clientAddress; int clientPort; if(args.length1) System.out.println(Usage: java UDPDaytimeServer port); System.out.println(Example: java UDPDaytimeServer 1234); System.exit(-1); try timeSocket=new DatagramSocket(Integer.parseInt(args0); System.out.println(时间服务器已经启动,正在侦听断口+args0+.); try while(true) inBuffer=new byte1; request=new DatagramPacket(inBuffer,inBuffer.length); / 等待客户程序的请求 timeSocket.receive(request); / 获得客户程序的地址和端口 clientAddress = request.getAddress(); clientPort = request.getPort(); System.out.println(接受来自 + clientAddress + , port + clientPort + 的时间服务请求.); / 创建并发送应答数据 currDate = new Date(); outBuffer = currDate.toString().getBytes(); reply = new DatagramPacket(outBuffer, outBuffer.length, clientAddress, clientPort); timeSocket.send(reply); finally timeSocket.close(); catch(IOException ex) System.out.println(ex); catch(NumberFormatException e) System.out.println(illeagl port +args0); System.exit(0); (1)客户端程序:UDPDaytimeClientimport .*;import java.io.*;public class UDPDaytimeClient public static void main(String args) String host; InetAddress hostAddress; byte outBuffer=new byte1; byte inBuffer=new byte512; DatagramPacket request; DatagramPacket reply; DatagramSocket timeSocket; if(args.length2) System.out.println(usage: java UDPDaytimeClient serverName serverPort); System.out.println(Example: java UDPDaytimeClient 1234); else try host=args0; hostAddress=InetAddress.getByName(host); System.out.println(正在取得+ hostAddress.toString()+的日期.); timeSocket=new DatagramSocket(); / 创建请求和应答缓冲区 request = new DatagramPacket(outBuffer, outBuffer.length, hostAddress, Integer.parseInt(args1); reply = new DatagramPacket(inBuffer,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论