课程设计-基于TCP的计算机通信工具编程实现_第1页
课程设计-基于TCP的计算机通信工具编程实现_第2页
课程设计-基于TCP的计算机通信工具编程实现_第3页
课程设计-基于TCP的计算机通信工具编程实现_第4页
课程设计-基于TCP的计算机通信工具编程实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、 四川大学 Time yyyy年M月d日2013年7月2日课程设计小组成员: 姓 名:孙道波 学号:1043031420姓 名:蔡万增 学号:1043031419姓 名:陈大多 学号:1043031418基于TCP的计算机通信工具编程实现 指导教师:杜勤健 专业名称:通信工程一、课题内容和要求1.课题内容基于TCP和多线程编程的聊天程序实现2.课题要求网络聊天程序设计非常复杂,允许多个人同时聊天更加需要多线程技术的支持,请实现一个简单的多线程网络聊天程序模拟。二、设计思路分析1. 在网络越来越发达的今天,人们对网络的依赖越来越强,网络聊天已经成了许多人生活中必不可少的一部分,基于这样的需求,出

2、现了许多网络聊天通信工具,像QQ,MSN等等,但是人们已经不再满足于单一的两个人之间的聊天,而是对多人同时聊天产生了兴趣,于是出现了网络聊天室,不同地方的人可以在那个虚拟的聊天室里面热烈聊天。基于这样的想法,我们用JAVA设计一个多人同时聊天的小程序,用Socket编程实现网络通讯,面向连接的,采用多线程的实现技术。2. 在程序中,可以设置加入连接的最大数目,通过更改IP地址和端口号,成为不同的客户端,与服务器端连接,进行多用户聊天。3. 为方便用户交互,我们采用图形化的用户界面。实现了好友添加,消息收发、显示等基本功能。三、概要设计该网络聊天程序大致分为三个主要部分:客户端、服务器端和用户图

3、形界面。而运行在不同的机器上的进程是通过向套接字发送报文来通讯的。各个部分的初步设计思想、流程及存储结构如下:程序整体框架:主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。而进程通过TCP套接字实现通信的示意图如下所示:主机或服务器主机或服务器. 进程 进程套接字套接字具有缓存变量的TCP具有缓存字变量的TCPINTERNET客户机/服务器应用程序使用面向连接的设计思路:服务器 客户端对入请求创建套接字port=x;.TCP连接建立创建与port=x连接的套接字等待入连接请求从connettionsoc

4、ket读请求使用clientsocket发送请求向connettionsocket写回答从clientsocket读回答关闭connettionsocket关闭clientsocket2. 客户端(Client)客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个端口。3. 服务器端(Server)服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口

5、),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。4. 用户图形界面用户图形界面方便程序与用户的交互,多个用户参加,完成会话功能,具体的设计要方便用户的使用,直观清晰,简洁明了,友好美观。5. 存储结构下面列出主要存储结构或变量:存储结构、变量、对象类型说明postInetAddress标识IP地址Portint标识端口Server ServerThread服务器端连接数Client Socket客户端连接数Client(String ip,int p,Face chat)publicClient类成员函数Public void run()VoidClient、Server类

6、成员函数Server(int port,Face chat)publicServer类成员函数Face()PublicFace类成员函数四、详细设计 代码分服务器端、客户端、和用户图形界面三部分,分别如下:1.服务器端服务器端主要是使用ServerSocket类,相当于服务器Socket,用来监听试图进入的连接,当新的连接建立后,该类为他们实例化一个Socket对象,同时得到输入输出流,调用相应方法完成会话。具体代码如下:package nupt.java.socket;import java.awt.*;import .*;import java.io.*;public class Serv

7、er extends Thread ServerSocket skt; / ServerSocket类监听进入的连接,为每个新的连接产生一个Socket对象 Socket Client =new Socket10; Socket Client1=null; int i = 0; TextArea in; int port,k=0,l=0; PrintStream theOutputStream; Face chat; public Server(int port, Face chat) try this.port = port; skt = new ServerSocket(port); th

8、is.chat = chat; catch (IOException e) chat.ta.append(e.toString(); public void run() chat.ta.append(等待连线.); while (true) try Clientk = skt.accept(); /当有客户端连接时就新建一个子线程 if (i 2) ServerThread server = new ServerThread10; serverk= new ServerThread(Clientk, this.chat, i); l=server.length; serverk.start()

9、; chat.ta.append(“客户端“+ Clientk.getInetAddress() + 已连线n); /for(int j=0;jserver.length;j+) theOutputStream = new PrintStream(serverk.getClient().getOutputStream(); i = serverk.getI(); k+; else /theOutputStream = new PrintStream(null); catch (SocketException e) catch (IOException e) chat.ta.append(e.t

10、oString(); public void dataout(String data) /for(int j=0;j + tftype.getText() + n); if (iamserver) server.dataout(tftype.getText(); else client.dataout(tftype.getText(); tftype.setText(); public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) 实验思考与总结由于对java编程的不熟,所以我们在编程过程中遇到了很大的困难,但通过向

11、老师同学们请教与及查阅资料,我们还是有了解决方案。所以在这次实验中,我们对java有了初步了解,学得了很多东西。明白了java是个很强大的编程工具。这个学期我们刚刚学习了计算机网络通信方面的知识,对于socket套接字的原理,计算机进程的通信过程有比较熟悉的了解,所以这次课题活动让我们又对TCP的运行,计算机通信通过编程实现方面有了更好的了解,更加巩固了以前学习的知识。3、通过观察我们也看到了,在本次课程设计中的这个编程程序虽然它实现了聊天的功能,但是它只能是一对一的聊天,因为TCP连接决定了不可能实现一对多的连接。但是我们现在的各种聊天软件不仅可以实现一对多的连接,有的甚至可以实现最大化的一对多的视频聊天。所以我们的这个课程设计所做到的还是很粗浅的层次,还有很多需要改进的地方和空间!希望我们以后再次做到相关的课题时我们不仅能在外观上使它更美化,而且在功能能更上一层楼!4、这次课题活动,是我们对于网路通信有

温馨提示

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

评论

0/150

提交评论