ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:251.15KB ,
资源ID:18435422      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18435422.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计报告Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计报告Word下载.docx

1、在这个程序中我们用到的是java.lang.Object中的BorderLayout来设置布局,使用这个布局管理方式我们只需要设置North,South,Center来设置我们的程序的窗口的布局。在本程序中,我们还用到了import java.awt和import java.awt.event的TextField和Button的GUI的组件。 初始化数据对象和构造用户界面;用户随时可以输入自己的喜欢的名字;创建用于监听的ServerSocket;If(监听线程对象 = NULL) 启动监听线程;If(监听线程启动) 监听连接请求; If(有连接请求) 启动一个新线程,监听其他的连接请求; 接受

2、连接请求; If(连接并且握手成功) 语音提示; 根据用户输入的信息和点击发送按钮事件,发数据; 随时接受已经连接的客户机的数据,并显示; If(客户机退出) 复位系统; 提示用户,并且监听其他的连接请求; If(用户发送bye信息或者直接退出程序) 关闭stream和Socket; 退出; else if(有其他用户发出连接请求) 显示发送连接请求的用户的用户信息; 通知呼叫用户服务器正忙,稍后再试;java列表说明各类模块的功能及成员变量和成员方法的作用:服务器程序:Class LanServerTalk;这个程序中设置了服务器程序的run方法,其中的init方法使用BorderLayou

3、t设置了本程序的界面的布局。用Thread 来设置了连接线程和监听进程。当程序中收到或者发送“bye”字符时退出程序。并全还设置了这种端口关闭方法。Class ListenOther;这个类是设置了专门用于监听其他用户连接时发送提示忙信息的类,并且还设置了退出是这种端口设置的关闭。Class ServerTalkCanvas;这个类很重要,设置了“显示消息区”的信息的更新方法。若程序的消息区没有满则讲消息直接写到消息区,若消息区满了,就重写整个消息区。Class ServerSendCtl;这个类设置了当点击发送按钮的时候所需要完成的事件。Class ServerNameCtl;这个类用来给程

4、序中的用户设置一个名字。客户机程序:Class LanClientTalk;这个类设置了run方法,和服务器程序中的LanServerTalk对应,而且实现的功能也是类似的。Class ClientTalkCanvas;设置了“显示消息区”的信息的更新方法。Class ClientSendCtl;Class ClientConnectCtl;这个类中设置了点击呼叫主机和连接按钮时需要做的工作。程序清单: /*目的:用于通信的服务器端 作者:刘文,廖志威,陈明 时间:2010年10月2010年11月 */import java.io.*;import .*;import java.awt.*;i

5、mport java.awt.event.*;import java.applet.AudioClip;import java.applet.Applet;public class LanServerTalk extends Applet implements Runnable /* * private static final long serialVersionUID = 1L; ServerTalkCanvas serverTalkCanvas; /显示对话信息的对象 ServerSendCtl serverSendCtl; /发送信息的用户接口的对象 ServerNameCtl ser

6、verNameCtl; /更改服务器名称的用户接口的对象 ListenOther listenOther; /监听其他用户连接请求的对象 private ServerSocket listenSocket = null; /监听用的socket private PrintWriter answerSend = null; / 发送数据的对象 private BufferedReader answerReceive = null; /接受数据的对象 public int SERVER_PORT = 3210; /监听端口 public int MAX_CLIENTS = 20; / 最大的请求数

7、 public boolean KeepRunning = true; /监听进程的运行标 private static final boolean AUTOFLUSH = true; /printwriter的auto flush 标志 private AudioClip audio; /声音提示 SuppressWarnings(unused) private static String dinfo = ; /用于显示信息 private static String response = /保存远程机器的信息 Thread LanServerThread; /服务器进程,用于监听连接以及通

8、信 public LanServerTalk() /初始化函数 try listenSocket = new ServerSocket(SERVER_PORT, MAX_CLIENTS); /SERVER_PORT = 3210, MAX_CLIENTS = 20; catch(IOException excpt) serverTalkCanvas.Display(不能在这个端口成功监听 : + SERVER_PORT + : + excpt); System.exit(1); /end of catch /end of server():构造函数的结尾 public void start()

9、 /创建并启动用于监听的新进程的函数 if(LanServerThread = null) LanServerThread = new Thread(this); LanServerThread.start(); public void stop() /停止监听进程运行的函数 if(KeepRunning) KeepRunning = false; public void init() /初始化用户界面 setLayout(new BorderLayout(); serverTalkCanvas = new ServerTalkCanvas(); add(Center, serverTalkC

10、anvas); serverSendCtl = new ServerSendCtl(serverTalkCanvas);South, serverSendCtl); serverNameCtl = new ServerNameCtl(serverTalkCanvas);North, serverNameCtl); resize(600, 400); audio = getAudioClip(getDocumentBase(), hi,au); public void run() /-run()函数:接收请求并且用for实现通信的新进程 String nextline = Socket fork

11、Socket = null; Thread listenOtherThread = null; Thread.currentThread().setPriority(Thread.NORM_PRIORITY); serverTalkCanvas.Display(提示:系统启动完成,正在监听连接如果没有输入用户名,缺省为LOCAL连接后,建议使用bye来借书通信 while(KeepRunning) if(!ServerSendCtl.CONNECT) forkSocket = listenSocket.accept(); answerReceive = new BufferedReader(n

12、ew InputStreamReader(forkSocket.getInputStream(); answerSend = new PrintWriter(forkSocket.getOutputStream(), AUTOFLUSH); if(answerSend != null & answerReceive != null) ServerSendCtl.CONNECT = true; audio.play(); if(listenOtherThread = null & ServerSendCtl.CONNECT) listenOther = new ListenOther(liste

13、nSocket, audio); listenOtherThread = new Thread(listenOther); listenOtherThread.start(); ServerSendCtl.InfoSend.equals() if(ServerSendCtl.CONNECT) if(ServerSendCtl.InfoSend.equals(bye answerSend.println(通信结束,再见 ServerSendCtl.CONNECT = false; break; else if(forkSocket = null) | (answerSend = null) |

14、(answerReceive = null) serverTalkCanvas.Display(不能发送信息 else answerSend.println(ServerSendCtl.InfoSend); serverTalkCanvas.Display(ServerNameCtl.LOCAL_NAME + ServerSendCtl.InfoSend); ServerSendCtl.InfoSend = answerSend.println(!#$% if(answerReceive.ready() nextline = answerReceive.readLine(); if(!next

15、line.equals()&! serverTalkCanvas.Display(nextline); nextline = if(nextline.equals( serverTalkCanvas.Display(用户可能退出了,发送的消息可能无法到达系统假如监听状态,可以接受用户的连接请求= null)answerSend.close(); if(answerReceive != null) answerReceive.close(); if(forkSocket != null) forkSocket.close(); listenSocket.close(); ServerSendCt

16、l.CONNECT = false; nextline = try listenSocket = new ServerSocket(SERVER_PORT, MAX_CLIENTS); catch(IOException excpt) serverTalkCanvas.Display(不能在端口监听 + SERVER_PORT + excpt); System.exit(1); answerSend.println(连接成功 ListenOther.otherreceiveInfo.equals( serverTalkCanvas.Display(ListenOther.otherreceiv

17、eInfo); ListenOther.otherreceiveInfo = IO 故障 if(answerSend != null ) answerSend.close(); if(answerReceive != null )answerReceive.close(); if(forkSocket != null ) forkSocket.close(); listenSocket.close(); System.exit(0);结束通信是出现IO故障class ListenOther implements Runnable /当与一个远程机器连接后,监听其他的连接的请求 public b

18、oolean Running = true; /监听进程的运行标志 public PrintWriter otherSend; public BufferedReader otherReceive; public static String otherreceiveInfo = public Socket otherforkSocket = null; public AudioClip audio; public ListenOther(ServerSocket listenSocket,AudioClip audio) this.listenSocket = listenSocket; th

19、is.audio = audio; public void stop() if(Running) Running = false; public void run() /用于提示客户暂时不能进行通信,之后关闭连接 String dinfo = while(Running) try otherforkSocket = listenSocket.accept(); otherSend = new PrintWriter(otherforkSocket.getOutputStream(), AUTOFLUSH); otherReceive = new BufferedReader(new Input

20、StreamReader(otherforkSocket.getInputStream(); otherreceiveInfo = otherReceive.readLine(); if(otherreceiveInfo != dinfo) otherSend.println(AgNreset dinfo = otherreceiveInfo;可能正在与其他用户通信,请重试 audio.play(); catch(IOException excpt) break; / end of catch if(otherSend != null) otherSend.close(); if(otherR

21、eceive != null) otherReceive.close(); if(otherforkSocket != null) otherforkSocket.close(); otherreceiveInfo = 结束监听其他用户的线程时 + excpt;class ServerTalkCanvas extends Canvas /用于以滚动的方式显示通信信息 private final int rowhigh = 25; /每行25高 private int rownum = 25; /在显示区同时显示的行数 private int Rectright, Rectbottom; /显示区的右下角的坐标 private int rowcurren = 0; / 屏幕显示的当前韩式,当first = false,rowcurren始终显示为最后一行 private String dpinfo; /存放显示信息的字符串数组 private boolean

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1