JAVA实验-综合应用实验

上传人:无*** 文档编号:68100775 上传时间:2022-04-01 格式:DOCX 页数:20 大小:193.06KB
收藏 版权申诉 举报 下载
JAVA实验-综合应用实验_第1页
第1页 / 共20页
JAVA实验-综合应用实验_第2页
第2页 / 共20页
JAVA实验-综合应用实验_第3页
第3页 / 共20页
资源描述:

《JAVA实验-综合应用实验》由会员分享,可在线阅读,更多相关《JAVA实验-综合应用实验(20页珍藏版)》请在装配图网上搜索。

1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2014年12月05日学院计算机科学与教育软件学院年级/专业/班姓名学号实验课程名称Java语言成绩实验项目名称综合应用实验指导老师樊志平一、 实验目的实验十三 网络编程(1)1. 掌握使用Socket类的属性和基本方法,2. 掌握使用ServerSocket类的方法实验十四 网络编程(2)1. 掌握使用DatagramSocket类的属性和基本方法,2. 掌握使用DatagramPacket类的方法二、实验器材1.MacBook Pro一台2.操作系统:OS X Yosemite3.编程软件:eclipse三、实验内容及原理实验十三

2、 网络编程(1)1 掌握使用使用Socket、ServerSocket类的方法。一使用Socket、ServerSocket服务器端程序设计模型(1) 在服务器端,先创建类ServerSocket的实例对象,注册在服务器端进行连接的端口号以及允许连接的最大客户数目。(2) 调用类ServerSocket的成员方法accept来等待客户端的连接,当有客户端与服务器端建立连接时,accept方法将返回连接通道在服务器端的套接字。通过该套接字可以与客户端进行数据通信(3) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入流(InputS

3、tream)和输出流(OutputStream)(4) 通过输入流(InputStream)和输出流(OutputStream)与客户端进行数据通信,处理从客户端获得的数据以及需要向客户端发送数据(5) 通信完毕后,关闭输入流和输出流和套接字客户端(1) 创建类Socket的实例对象,与服务器建立连接,在建立实例对象时须指定服务器端的主机名和端口号,主机名和端口号必须完全匹配才能建立连接(2) 调用类Socket的成员方法getInputStream和getOutputStream获得该套接字所对应的输入流(InputStream)和输出流(OutputStream)(3) 通过输入流(Inp

4、utStream)和输出流(OutputStream)与客户端进行数据通信,处理从客户端获得的数据以及需要向客户端发送数据(4) 通信完毕后,关闭输入流和输出流和套接字实验十四 网络编程(2)1掌握使用使用DatagramSocket、DatagramPacket类的方法。一 使用DatagramSocket、DatagramPacket(1) 在服务器端,先创建类DatagramSocket的实例对象,注册在服务器端进行连接的端口号。等待客户程序的请求(2) 创建据报的缓冲区,调用DatagramPacket创建接受数据包(3) 调用类DatagramSocket的成员方法receive来接

5、受客户端的数据,并获取客户端IP地址和端口(4) 创建包含发送数据和向给定IP地址和端口发送的应答数据包;(5) 调用类DatagramSocket的成员方法send来发送数据报(6) 通信完毕后,关闭UDPDaytimeServer并退出;客户端(1) 创建类DatagramSocket的实例对象(2) 创建请求和应答缓冲区,调用DatagramPacket创建发送数据包,在创建数据包时须指定服务器端的主机名和端口号,和需要发送的数据与数据长度(3) 调用类DatagramSocket的成员方法send来发送请求(4) 调用类DatagramSocket的成员方法receive来接受数据报(

6、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 client

7、Socket; 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

8、) 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)

9、 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; St

10、ring 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)服务器端程

11、序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.p

12、rintln(客户的地址:+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 i

13、n=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.

14、writeDouble(area); catch (IOException e) System.out.println(客户离开); break; 运行结果:服务器:客户端:实验十四 网络编程(2)1.使用DatagramSocket编写一个时间服务器程序,它能够向客户程序发送以下格式的时间信息。时间格式为:Sat Jan 15 10:45:20 CST 2005算法提示: 打开一个数据报DatagramSocket;开始循环: 创建客户程序请求数据报的缓冲区并等待请求; 当接收到请求时获取发送者(即客户程序)的IP地址和端口; 创建包含当前日期和时间信息,可向给定IP地址和端口发送的应答数据

15、包; 发送上述应答数据包;结束循环;关闭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 clientA

16、ddress; 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=

17、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();

18、 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); S

19、ystem.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

20、(args.length2) System.out.println(usage: java UDPDaytimeClient serverName serverPort); System.out.println(Example: java UDPDaytimeClient 127.0.0.1 1234); else try host=args0; hostAddress=InetAddress.getByName(host); System.out.println(正在取得+ hostAddress.toString()+的日期.); timeSocket=new DatagramSocket

21、(); / 创建请求和应答缓冲区 request = new DatagramPacket(outBuffer, outBuffer.length, hostAddress, Integer.parseInt(args1); reply = new DatagramPacket(inBuffer, inBuffer.length); / 发送请求并读取应答 try timeSocket.setSoTimeout(5*1000); timeSocket.send(request); timeSocket.receive(reply); System.out.print(时间服务器应答:+ new

22、 String(inBuffer, 0, reply.getLength(); finally timeSocket.close(); catch(IOException ex) System.out.println(ex); catch(NumberFormatException e) System.out.println(illeagl serverPort +args1); System.exit(0); 运行结果:服务器:客户端:五、实验结果及分析单纯的做上面的实验并不能真正学到多少,因为通常java都是做服务端的,跟其他不同平台进行数据通信,于是我为了加深对Socket的了解,我特意为iPhone写了个客户端,服务端依然用java,测试它们之间数据的传送。运行结果如下:Iphone端:连接后接收到来自java服务端的字符串。点击计算,发送边长给服务器,并获取计算结果。服务端:在编写iPhone端的Socket客户端期间遇到了很大问题。Java服务端识别不了iPhone端发送的字符串。于是各种谷歌搜索,发现问题如下,原来java的readUTF读取的字符跟objective-c 的并不完全相同。但是没有问题是解决不了的,最后还是解决了这个奇怪的问题。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!