Socke通讯系统课程设计报告文档.doc

上传人:李司机 文档编号:1166009 上传时间:2022-07-12 格式:DOC 页数:15 大小:69.58KB
返回 下载 相关 举报
Socke通讯系统课程设计报告文档.doc_第1页
第1页 / 共15页
Socke通讯系统课程设计报告文档.doc_第2页
第2页 / 共15页
Socke通讯系统课程设计报告文档.doc_第3页
第3页 / 共15页
Socke通讯系统课程设计报告文档.doc_第4页
第4页 / 共15页
Socke通讯系统课程设计报告文档.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Socke通讯系统课程设计报告文档.doc》由会员分享,可在线阅读,更多相关《Socke通讯系统课程设计报告文档.doc(15页珍藏版)》请在三一办公上搜索。

1、JavaJava 课程设计课程设计说明书题题 目:目:SocketSocket 网络通信程序设计网络通信程序设计目录目录摘要摘要 I I序言序言 II II1 1、系统需求分析、系统需求分析 1 11.1 需求分析 11.2 可行性分析 1经济可行性 1技术可行性 2社会可行性 22 2、设计思路、设计思路 3 32.2 设计目的 32.1 设计思想 32.3 设计内容 33 3、详细设计、详细设计 4 43.1 效劳端程序 43.2 客户端程序 43.3 流程图 54 4、运行调试与分析讨论、运行调试与分析讨论 6 64.1 运行调试 64.2 分析讨论 75 5、设计体会与小结、设计体会与

2、小结 9 9参考文献参考文献 1010致致 1111附录附录 I I:源代码:源代码带注释带注释1212摘要摘要Socket(套接字)是一种基于 TCP/IP 的编程接口。它采用客户/效劳器通信机制,使客户端和效劳器端通过 Socket 接口在网络上实现连接和数据交换。它提供了一系列系统调用,使用户可以方便地实现 TCP 和 UDP 等多种网络协议地通信。它使用户可以在网络协议上工作而不必对该网络协议有非常深入的了解。这样编写的程序可被迅速移植到任何支持 Socket 的网络系统中去。本文通过主要利用 Java Socket 类实现双机通信,实现一个简单的效劳器,客户端聊天通信工具。并对 Ja

3、va Socket 的实现进展简单的分析和讲解,通过本文以到达对Socket 的原理有一个较清晰的认识。关键词:关键词:套接字、 SocketServer类、客户机 /效劳器模式序言序言随着计算机网络的快速开展,带动了 Java 语言的开展,Java 越来越成为网络上广为流行的编程语言。Java 是由 SunMicrosystems 公司于 20 世纪末推出的一门面向对象程序设计语言简称 Java 语言 。用 Java 实现的支持 Java applet 的浏览器充分的展示出了 Java 的优势和魅力:跨各种操作系平台、实现动态的 Web 技术、平安的语言权限检查环境、JDK 类库提供的丰富网

4、络类库,易于实现网络编程的开发。Socket 是Java 网络编程的根底,本文就是从套接字的根本原理和使用方法出发,并通过一个简单网络通信例子,讲述在 Java 中使用 Socket 进展网络编程。Socket(InetAddress address, int port, boolean stream);连接到指定 IP 地址,主机端口和数据报方式的流。Socket(InetAddress address, int port, boolean stream);连接到指定 IP 地址,主机端口和数据报方式的流。效劳器端程序任务主要是监听,等待客户机连接,建立一个等待客户端连接的ServerSoc

5、ket 套接字。构造方法如下:public ServerSocket(int port); 连接到的特定端口。public ServerSocket(int port, int backlog); 在声明构造方法时候,必须对创立的 Socket 或 ServerSocket 捕获异常或抛出例外。1 1、系统需求分析系统需求分析1.11.1 需求分析需求分析为了开发出符合要求的网络聊天程序,首先必须知道使用者的需求。对需求的深入理解是开发工作获得成功的前提条件,它对目标工程提出完整、准确、清晰、具体的要求。首先,效劳器需要同时连接很多个用户,并能提供应这些连接用户所需要的任务处理请求,这就要求效

6、劳器能同时处理多个 Socket 连接。效劳器模型一般分为循环效劳器和并发效劳器,循环效劳器一次只能处理一个连接,也就是说同一时间只能由一个用户连接到效劳器进展消息处理,这种情况是不被允许的。因此我们将采用多线程方式的并发效劳器来设计效劳器端,这样将从很大程度上提高效劳器的运行效率。其次,客户端只需要连接到效劳器便可以进展任务的处理工作,因此客户端的主要性能要求为图形界面运行的稳定性和对出错信息的及时反映。当一个窗体出现问题时能够及时的处理,让主程序不受影响。再者,所有的应用程序在运行过程中都会出现出错的情况,这种错误可能来自于程序本身,也有可能是用户操作的失误所造成的。当有错误发生时,我们该

7、有一个很好的机制来保障错误能够及时的被排除。当应用程序出现了错误的时候我们就需要程序能提供应我们出错的信息,这样用户就能够很快的找出具体的出错原因,以便寻找合理的途径去解决它。1.21.2 可行性分析可行性分析可行性分析也称为可行性研究。它是以系统调查为根底,针对开发新系统是否具有必要性和可能性,对新系统的开发从技术、经济、社会的方面进展分析和研究,从而防止投资失误,保证新系统成功开发。可行性研究是为了用最小的代价在尽可能短的时间确定问题能否解决。可行性分析包括以下几个方面的内容:1.2.11.2.1 经济可行性经济可行性从经济可行性角度出发,在开发系统的过程中,必须要考虑如何节约开发本钱,缩

8、短开发周期,用最少的本钱获取最大的回报。为了保证软件产品的质量,系统的开发周期一般都是在一个月左右,并且要保证有充裕的时间进展调研和测试。开发该网络通信系统所需的软件环境Eclipse 开发工具和数据库 MySQL和所需的硬件环境计算机及其相关硬件在机房即可满足,所以在经济方面是可行的。1.2.21.2.2 技术可行性技术可行性该系统使用的开发语言是 JAVA,由于 JAVA 语言具有跨平台性,所以很多编程者都会选择它。经过多年的开展 JAVA 虚拟机已经具有很高的版本,在性能上也有了很大的提高。本系统采用 C/S 架构。因为 C/S 具有一定的灵活性、通用性和易操作性等特点,对用户来说是一个

9、比拟好的选择。目前这种架构在系统架构方面被广泛采用,在系统架构上已经积累了大量的经历,所以本系统在技术上是可行的。1.2.31.2.3 社会可行性社会可行性随着计算机的普及和开展,以及互联网技术的开展,很多公司和企业都能提供局域网信息效劳。而网络聊天系统只需要用户的电脑进入局域网就能访问,不必购置其他任何昂贵设备,大大节约了资金。无论从技术可行性、经济可行性还是社会可行性来说,系统的设计与实现都是可行的。2 2、设计思路设计思路2.12.1 设计思想设计思想套接字对象在网络编程中扮演着重要的角色,可以用套接字技术编写一个聊天室,效劳器为每个客户启动一个线程。在该线程过套接字和客户交流信息,当客

10、户向效劳器发送一条聊天信息“大家好时,效劳器要让所有的这些线程中的输入流写入信息“大家好,这样所有的客户的套接字的输入流就都读取到了这一条信息。如果把信息“你好发送给特定用户,效劳器就让特定线程中的输入流写入信息“你好,则只有特定客户的套接字的输入流可以读取到这条信息。2.22.2 设计目的设计目的1 、理解 Socket 通信原理。2 、掌握使用 ServerSocket 类和 Socket 类进展 TCP Socket 通信的程序设计方法。3 、熟悉 ServerSocket 类和 Socket 类的构造方法及常用方法。4 、熟悉通过 URL 访问网络资源方法。5 、通过 URL 类和 U

11、RLConnection 类获得指定网络资源内容和文件属性,理解流在获得文件内容中的作用。2.32.3 设计设计内容内容采用 TCP Socket 通信实现的 Socket 网络通信。运用 Java 程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了 包,java.io 包等。程序实现了聊天室的根本功能,一个实现 Socket 通信的网络应用程序,由一个效劳器端程序和一个客户端程序组成。效劳端程序中包含一个提供 TCP 连接效劳的 ServerSocket 对象和一个参与通信的 Socket 对象,客户端程序中只包含一个参与通信的 Socke

12、t 对象。效劳端的 ServerSocket 对象提供 TCP 连接效劳,连接成功后,实际进展通信的是效劳端的 Socket 对象和客户端的 ServerSocket。3 3、详细设计、详细设计3.13.1 效劳端程序效劳端程序ServerSocket 类用于效劳器端,负责侦听和响应客户机端的连接请求,并承受客户机端发送的数据。ServerSocket 类的主要任务是在效劳器端等候其他机器与它连接,一旦客户机申请建立一个 Socket 连接,ServerSocket 类通过 accept方法返回一个对应的效劳器端 Socket 对象,以便进展直接通信。当两台计算机连接成功后,效劳器端与客户机端

13、就得到一个真正的“Socket-Socket连接。此时,就可利用 Socket 类的getInputStream和 getInputStream方法获取相应端的数据流。建立ServerSocket 对象有以下几种方法:ServerSocket(intportServerSocket(intport,intbacklog)ServerSocket(intport,intbacklog,InetAddressbindAddr)其中,backlog 为最接数,bindAddr 为效劳器所绑定的地址,port 为效劳器侦听的端口号。在效劳器程序中,用了 ServerSocketint port构造方法

14、建立接收客户机的ServerSocket 对象:try ServerSocket server=new ServerSocket(4000);catch(IOE*ception io)在 ServerSocket 对象 Server 建立后,就可用 accept接收客户的 Socket 连接呼叫:Socket client=server.accept;在连接建立后,效劳器端 Socket 对象调用 getInetAddress方法可以获取一个InetAddress 对象,该对象含有客户机端的 IP 地址和域名:area.append(已连接寒塘渡鹤影:+client.getInetAddres

15、s().getHostName()+nn);3.23.2 客户端程序客户端程序Socket 是所有网络协议的根底,也是 JDBC 的根底。Socket 类用于客户机端,在客户机端通过构造一个 Socket 类建立于效劳器的连接。当一个 Socket 连接建立后,用户就可以从该 Socket 对象中获取输入/输出流。在客户端程序中,用以下语句建立了 Socket 对象 client,并建立了与效劳器之间的通信“线路:trySocket client=new Socket(127.0.0.1,4000);area.append(已连接到冷月葬花魂:+client.getInetAddress().

16、getHostName()+nn); /显示连接到效劳器in=client.getInputStream();out=client.getOutputStream(); catch(IOE*ception io)client 使用 getInputStream方法获得一个输入流 in,用以下语句可以从这个输出流 out 将信息输出到这个“线路中的信息:bytebuf=new byte256;in read(buf);client 还使用 getOutputStream方法获得一个输出流 out,可以用这个输出流out 将信息输出到这个“线路中。3.33.3 流程图流程图 连接输入流 输出流客户

17、端套接字Socket效劳器端套接字Socket输出流输入流getInputStreamgetOutputStream 连接图 3.3 套接字连接示意图4 4、运行调试与分析讨论、运行调试与分析讨论4.14.1 运行调试运行调试本次考察是实现 Socket 网络通信的实验,Socket 是所有网络协议的根底。内容主要需要两个程序,一个是客户端程序、一个是效劳端程序。而 Socket 类是用于客户机端,在客户机端通过构造一个 Socket 类来建立于效劳器的连接。当一个 Socket 连接建立后,用户就可以在 Socket 对象中进展通信了。本次实验,无论是在程序的编写过程还是调试过程,都遇到了很

18、多问题。在程序的编写过程要考虑建立 ServerSocket 对象的方法以及构造方法的建立。其中还要注意一些语法问题,而真正到了调试程序的时候,问题更是源源不断。首先,有好多错误都是因为自己的粗心,将程序输入错误,如大小写不分,导致无法读取程序。其中的string 中 S 写成了小写。javac Client.java:46:cannot find symbol symbol :class string location:class Client string str=te*t.getTe*t(); 1 error 输出完成耗时:1 秒 有时候又有一些语言错误是在编写过程中没有注意到的。例如:

19、语句 area.append(冷月葬花魂说:+str=new String(buf);中多写了“str=这就是个语法错误:javacClient.java:38:cannot find symbol symbol :variable str location:class Client area.append(l 冷月葬花魂说:+str=new String(buf); Client.java:38: une*pected type required:variable found :value area.append(冷月葬花魂说:+str=new String(buf); 2 errors 输

20、出完成 耗时:3 秒4.24.2 分析讨论分析讨论有时甚至还会出现 Socket 对象调用的错误,都会导致程序无法运行。而到调试出运行结果的时候,还会有些功能不够完善,例如发完信息后,文本框中的文字不会自动去除,还需要参加程序代码 te*t.setTe*t(null);来完善程序。经过不断的修改程序,完善程序,终于调试出了客户端程序和效劳端程序能够相互通信的程序。该聊天程序要先运行效劳器端程序后运行客户机端程序,连接后,可以在客户机端和效劳机端的界面的文本框“交谈中输入字符串,使用 Enter 键将信息输出到对方,进展交谈。运行结果如下:运行结果如下:客户端程序实现界面:客户端程序实现界面:效

21、劳端程序实现界面:效劳端程序实现界面:5 5、设计体会与小结、设计体会与小结通过本次考察,我理解了 Socket 通信原理,掌握了 ServerSocket 类和 Socket 类进展 TCPSocket 通信的程序设计方法;并熟悉了一些 Socket 类的构造方法、Socket 类的常用方法、ServerSocket 类的构造方法和 ServerSocket 类的常用方法。现在我懂得其实考察重要的是过程,尤其是程序的编写过程及上机调试的过程,因为在其过程中,我不断地发现了我试验中存在的诸多问题,并加以改正,其中我收获了很多,并且当我调试成功时,会有一种成功的喜悦感和满足感。实验是我们不断在所

22、学知识中检验自我、提升自我能力的过程。这次考察对我理论了实验都有很大的提升,我想这些对我们今后的学习生活都有很重要的意义,这将是我在程序设计以及大学学习过程中的珍贵经历和财富,真正让我受益匪浅。参考文献参考文献1Java 编程思想M,机械工业,2007.6230 天学通 Java 工程案例开发M,电子工业,2021.73Java Swing 图形界面开发与案例详解M,清华大学,2021.124Java TCP/IP Socket 编程原书第 2 版M,机械工业,2021.15Java 例大全M,机械工业,2021.106Java 开发实战经典M,清华大学,2021.77Java 程序设计:一种

23、跨学科的方法M,清华大学,2021.58Java 程序设计教程M,机械工业,2021.99Java 从入门到精通M,清华大学,2021.810Java 网络编程技术与实践M,清华大学,2021.8致致JAVA 语言课程设计的选题、探讨及报告的撰写均是在我们指导教师的悉心指导下进展的。设计的每一个环节无不凝聚着教师的心血。教师在课程设计方面有很多的实践经历,在我们面对问题时,对我们的悉心指导及其严谨的工作态度和锐意创新的精神,使我们受益匪浅,在此特别向教师表达深深地感和由衷的敬意。在程序完善的过程中,我们也遇到了这样那样的问题,但经过自己的不懈努力及查阅大量的资料,最终都得到了根本满意的答案。同

24、时,同学也给了我许多有益的启示,促动和帮助,最后,再次感他们使我能够顺利的完成课题。附录附录 I I:源代码:源代码带注释带注释效效劳劳端端程程序序如如下下/Server.javaimport java.io.*;import .*;import java.awt.*;import java.awt.event.*;/聊天室效劳器端主类public class Server e*tends Frame implements ActionListenerTe*tField te*t; /输入发送内容的文本行 Te*tArea area; /显示对话内容的文本区InputStream in; /定

25、义数据输入流OutputStream out; /定义数据输出流 public Server() /效劳器构造方法super(冷月葬花魂); setSize(250,200); /聊天室窗口大小te*t=new Te*tField(,20); area=new Te*tArea();Panel panel=new Panel(); panel.add(new Label(交谈); panel.add(te*t); te*t.addActionListener(this); add(North,panel); add(Center,area);setVisible(true); /显示对话框 t

26、ry ServerSocket server=new ServerSocket(4000); /效劳器请求 TCP连接Socket client=server.accept();area.append(已连接寒塘渡鹤影:+client.getInetAddress().getHostName()+nn); /显示连接到客户端 in=client.getInputStream(); out=client.getOutputStream(); catch(IOE*ception io) /捕获异常对象 while(true) try byte buf=new byte256; in.read(bu

27、f); area.append(寒塘渡鹤影说:+new String(buf); /显示对方发来的内容 area.append(n);/对方发来内容的换行 catch(IOE*ception e) /捕获异常对象 public void actionPerformed(ActionEvent e) /单击发送我输入的内容 tryString str=te*t.getTe*t();out.write(str.getBytes();area.append(我说:+str); /显示我说的内容 area.append(n); /我发送内容的换行te*t.setTe*t(null); /发送完毕信息清

28、空写信息文本框 catch(IOE*ception ioe) /捕获自定义异常对象 public static void main(String args)new Server(); /启动效劳端 客客户户端端程程序序如如下下/Client.javaimport java.io.*;import .*;import java.awt.*;import java.awt.event.*;/聊天室客户端主类public class Client e*tends Frame implements ActionListenerTe*tField te*t; /输入发送 内容的文本行Te*tArea a

29、rea; /显示对话内容的文本区InputStream in; /定义数据输入流OutputStream out; /定义数据输出流public Client() /客户端构造方法super(寒塘渡鹤影);Panel panel=new Panel();panel.add(new Label(交谈); te*t=new Te*tField(,20);area=new Te*tArea();panel.add(te*t);te*t.addActionListener(this);add(North,panel);add(Center,area);setSize(250,200); /聊天室窗口大

30、小setVisible(true); /显示对话框trySocket client=new Socket(127.0.0.1,4000); /连接的效劳器的 IP 地址area.append(已连接到冷月葬花魂:+client.getInetAddress().getHostName()+nn); /显示连接到效劳器in=client.getInputStream();out=client.getOutputStream(); catch(IOE*ception io) /捕获异常对象while(true)trybyte buf=new byte256;in.read(buf);area.ap

31、pend(冷月葬花魂说:+new String(buf); /显示对方发来的内容area.append(n); /对方发来内容的换行 catch(IOE*ception e) /捕获异常对象 public void actionPerformed(ActionEvent e) /单击发送我输入的内容tryString str=te*t.getTe*t();out.write(str.getBytes();area.append(我说:+str); /显示我说的内容area.append(n); /我发送内容的换行te*t.setTe*t(null); /发送完毕信息清空写信息文本框 catch(IOE*ception ioe) /捕获自定义异常对象 public static void main(String args)new Client(); /启动客户端

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号