基于java的聊天系统的设计于实现-实验报告(附源代码)[实用论文内容摘要:
e)。 } }//end get who add me as friend //处理上线结束 (Echo ing :+str)。 } (Close...)。 }catch(IOException e){}//捕或异常 finally {try{()。 } catch(IOException e){} } } } public class Server{//主服务器类 public static void main(String args[])throws IOException{ ServerSocket s=new ServerSocket(8080)。 //在 8080 端口创建套接口 (Server start..+s)。 try{ while(true){Socket socket=()。 //无限监听客户的请求 (Connectino accept:+socket)。 try{new ServerThread(socket)。 //创建新线程 }catch(IOException e){()。 } } }finally{()。 }//捕或异常 } }//服务器程序结束 2. 客户程序如下(部分) 客户通过 Socket(IAddress,port)建立与服务器的连接。 服务器与客户都通过构造 BufferedReader,PrintWriter 来建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦收到客户方的连接请求,服务器 accept()方法返回一个新建的 Socket 对象。 客户端然后向服务器发送消息,比如注册,登录,查找好友等,服务器收到来自客户的请求后,针对不同的消息处理请求 , 虽然 UDP 不可靠但是对于 icq 可靠性并不太重要,而且 UDP 快速,所以客户间发送信息通过 UDP。 用户登录时通过类 DatagramPacket 和 DatagramSocket 创建 UDP 包括其本 地接受端口以及发送端口,默认端口为 5000 和 5001,通过取得的好友的 IP地址来向好友发送消息( send(DatagramPacket)和接受消息(receive(DatagramPacket))。 当用户通过 UDP 收到消息后,可以通过DatagramPacket 的方法 IAddress getAddress()得到对方的 ip 地址,通过对好友列表比较以判断是谁并提示用户收到某某的消息,然后用户选择该用户查看消息,如果好友列表没有该人就显示收到陌生人的消息。 用户可以按陌生人按钮查看消息。 1. 用户注册。 当服务器 收到用户的注册请求,便开始接受客户传第的信息,诸如客户的呢称啦,性别,籍贯,头像,个人资料等,接受完毕后,便通过 JdbcOdbc 与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其 Jicq 号码,并在数据库中注册用户的 IP地址,然后更新其Status 为 1 即用户在线。 客户收到服务器返回的信息后,便打开主程序窗口,并同时开始创建 UDP 以便在用户之间建立联系。 ******部分程序如下: void jButton1_mouseClicked(MouseEvent e) { try{ Socket socket=new Socket((sername),serverport)。 //连接服务器 BufferedReader in=new BufferedReader(new InputStreamReader(()))。 PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(())),true)。 (new)。 //告诉服务器我要注册 (().trim())。 //告诉服务器我的呢称,密码,,资料 (())。 //以及头像号等信息 (().trim())。 (().trim())。 (())。 (())。 //head picindex int no。 no=(())。 //(no)。 String str= ; str=().trim()。 //从服 务器取得状态 if((false)) (this,对不起,出错了 : (,ok,)。 //失败就警告 else{//成功就打开主程序 (this,your javaicqis+no,ok,)。 ()。 MainWin f2=new MainWin(no,sername,serverport)。 (true)。 } //(\n)。 //}while(!(ok))。 // ()。 }catch(IOException e1){} } } 2. 用户登录。 在客户端,用户输入其 jicq 号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过 JdbcOdbc 读取数据库,然后与用户输入的信息比较,如果相同就向客户返回成功消息并将其 Status 字段设为1表示上线了以及注册其 IP地址,否则返回错误,如果客户收到成功信息就打开主窗口,否则提示出错。 如果成功,便打开主程序窗口,并同时开始创建 UDP 以便在用户之间建立联系。 然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的friend 表,得到好友的号码后,再在 icq 表中读取 好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,比如头像,呢称。 并且建立几个矢量( Vector)用以存储好友的呢称, jicq 号码,头像编号,ip 地址等信息。 部分程序如下: (程序流程图与注册差不多 ,略 ) void login_mouseClicked(MouseEvent e) { try{Socket socket=new Socket((server),serport)。 //与服务器连接 BufferedReader in=new BufferedReader(new InputStreamReader(()))。 //创建 //输入流 PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(())),true)。 //创建输出流 (login)。 //告诉服务器我要登录 (())。 //告诉服务器我的号码 (())。 //告诉服务器我的密码 String str=。 //do{ str=().trim()。 //取得服务器发过来的消息 if((false)) (this,对不起,出 错了 :(,ok,)。 //失败 else{ ()。 int g=(())。 MainWin f2=new MainWin(g,server,serport)。 //如果成功就打开主程序 (true)。 } //(\n)。 //}while(!(ok))。 }catch(IOException e1){} } 3. 用户添加好友。 客户登录后,按查找按钮后,开始向服务器发出查找请求,服务器读取数据库表 icq 并向客户返回其结果,客户收到后在查找窗口中显示,如果用户选择了一个好友,就向服务器发送添加好友请求,服务器收到后就向数据库表 friend 中添加自己的号码以及好友的号码,并从 icq表中读取其基本信息返回给客户端,然后客 户收到并在主窗口显示该好友。 并且通过 UDP 通知该客户,对方收到该消息后,可以选择添加该用户为好友或者不。 (程序流程图与程序略 ,参看源程序 ) 4. 用户删除好友。 用户在其好友列表中选择要删除的好友并按删除,然后向服务器发送删除请求,服务器收到该请求后,连接数据库表 friend 删除用户及该好友的记录,如果成功就向客户返回成功消息,客户收到后在其好友列表中删除该好友。 (程序流程图与程序略 ,参看源程序 ) 5. 用户发送和接收消息 .用户通过在好友列表里的好友的 ip 地址 ,通过 UDP与其他用户进行信息交流 , (程序流程图与程序略 ,参看源程序 源代码文件夹 )及部分程序运行结果界面图 picture 文件夹 三.程序界面 程序界面主要参考腾迅公司的 2020,在实现时采用的 Java 的 Swing 图形包。 开发工具用的是 JCreater。 四.程序的使用 源程序参见 源代码 文件夹 部分程序运行结果界面图 picture 文件夹 1. 服务器端:( Windows 平台)首先应有 java 环境 jdk,建议采用。 然后安装SQL 数据库,建立数据库 javaicq,并且建立表 icq 和表 friend。 然后在控制面板中的 ODBC数据源中设置用户 DSN数据源 javaicq和文件 DSN数据源 javaicq建立与数据库的连接。 然后运行 javac ,java Server 及可。 2. 客户端:只要有有 java环境 jdk就可以建议。 然后运 行 javac ,java New 及可。 五.参考文献: Java2图形设计 卷二: Swing (美 ) David Java2 编程思想 (美 ) Bruce Eckel JAVA 网络编程(第一卷) (美 ) Stevens Java 语言与面向对象程序设计(清华大学出版)印雯 编著 王冲海 () 2020 年 5 月 运行时,用户登录端: import .*。 import .*。 import .*。 import .*。 import .*。 public class New extends JFrame {//登录窗口类 JPanel contentPane。 //***************** String server。 //服务器名 int serport。 //端口 private Socket socket。 private BufferedReader in。 //输入输出流 private PrintWriter out。 //***********//程序界面 JPanel jPanel1 = new JPanel()。 JLabel jLabel1 = new JLabel()。 JLabel jLabel2 = new JLabel()。 JTextField jicq = new JTextField()。 JLabel jLabel3 = new JLabel()。 JPasswordField password = new JPasswordField()。 JPanel jPanel2 = new JPanel()。 JButton login = new JButton()。 JButton newuser = new JButton()。 JButton quit = new JButton()。 JLabel jLabel6 = new JLabel()。 JTextField servername = new JTextField()。 JLabel jLabel7 = new JLabel()。 JTextField serverport = new JTextField()。 public New() { enableEvents()。 try { jbInit()。 server=().toString().trim()。 serport=(().trim())。 } catch(Exception e) { ()。 }。基于java的聊天系统的设计于实现-实验报告(附源代码)[实用论文
相关推荐
, 到到 控控 制制 线线。 用用 LPC2124的的 个个 端端 口口 来来 控控 制制 键键 盘盘 进进 行行 扫扫 描描 , 来来 实实 现现 键键 盘盘 值值 的的 读读 取取 , 其其 中中 到到 送送 扫扫 描描 数数 据据 , 可可 以以 确确 定定 按按 下下 的的 键键 在在 矩矩 阵阵 键键 盘盘 中中 的的 行行 , 键键 盘盘 的的 值值 来来 确确 定定 按按 下下
接搜索引擎的新时代。 Lucene 简介 最初 Lucene 是 Apache 软件基金会 Jakarta 项目组 的 子项目,是一个完全开放源码的全文检索工具包。 Lucene的原作者是 Doug Cutting,他是一位资深全文检索专家, VTwin搜索引擎的主要开发者。 2020年 3月 Doug Cutting把 Lucene转移到 SourceFe上, 2020年 10月献给
a analysis and numerical calculation of the advanced technology and the interactive language environment. As a powerful scientific puting platforms, it almost to satisfy all puting requirements. As
请求,并对请求进行处理,将请求结果返回给客户机。 连接和无连接 网络中存在面向连接和无连接两种通信方式。 面向连接的通信方式要求通信双方(进程)必须先建立连接, 然后进行信息交互,通信结束后还须关闭连接。 该种通信方式可靠,适合大数据量传输(如因特网中的 TCP连接)。 无连接的通信方式不必先建立连接,而是直接进行通信,仅适合少量数据传输(如因特网中的 UDP 数据报)。 协议
图 后台登录界面 21 管理员通过用户名登陆后台以后,可以看到如下界面。 如图 所示: 图 后台登录欢迎界面 在该页面中,我们可以对界面里的功能选项进行增加修改,以此对网站信息进行维护。 如图 所示: 图 后台维护界面 1 与 此同时,单个选项也同样可以进行修改,添加,删除功能。 如图 所示: 22 图 后台维护界面 2 23 4 总结 本次设计历时两个多月,在此确实感触良深。
的功能特性。 B. : 移动信息设备描述提供了一种让 MIDlets持久性储存并在以后可以取回数据的机制。 C. : 这个 MIDlet包明确定义了 MIDP应用,也定义了和应用环境之间的交互。 D. : 移动信息设备还描述包括基于有限连接设备配置GenericConnection框架的网络支持。 基于 J2ME 的手机五子棋游戏的设计与实现 8 图 25 MIDlet生命周期流程图 开发平台