部分程序如下:(程序流程图与注册差不多,略)
void login_mouseClicked(MouseEvent e) { try{Socket socket=new Socket(InetAddress.getByName(server),serport);//与服务器连接 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//创建//输入流 PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); //创建输出流 out.println(\login\);//告诉服务器我要登录 out.println(jicq.getText()); //告诉服务器我的号码 out.println(password.getPassword()); //告诉服务器我的密码 String str=\ \; //do{ str=in.readLine().trim();//取得服务器发过来的消息 if(str.equals(\false\)) JOptionPane.showMessageDialog(this,\对不起,出错了:-(\,\ok\,JOptionPane.INFORMATION_MESSAGE);//失败 else{ this.dispose(); int g=Integer.parseInt(jicq.getText()); MainWin f2=new MainWin(g,server,serport);//如果成功就打开主程序 f2.setVisible(true); } //System.out.println(); //}while(!str.equals(\ok\)); }catch(IOException e1){} }
用户添加好友。客户登录后,按查找按钮后,开始向服务器发出查找请求,服务器读取数据库表icq并向客户返回其结果,客户收到后在查找窗口中显示,如果用户选择了一个好友,就向服务器发送添加好友请求,服务器收到后就向数据库表friend中添加自己的号码以及好友的号码,并从icq表中读取其基本信息返回给客户端,然后客户收到并在主窗口显示该好友。并且通过UDP通知该客户,对方收到该消息后,可以选择添加该用户为好友或者不。(程序流程图与程序略,参看源程序) 用户删除好友。用户在其好友列表中选择要删除的好友并按删除,然后向服务器发送删除请求,服务器收到该请求后,连接数据库表friend删除用户及该好友的记录,如果成功就向客户返回成功消息,客户收到后在其好友列表中删除该好友。(程序流程图与程序略,参看源程序) 用户发送和接收消息.用户通过在好友列表里的好友的ip地址,通过UDP与其他用户进行信息交流, (程序流程图与程序略,参看源程序src.zip)及部分程序运行结果界面图pic.zip
三.程序界面
程序界面主要参考腾迅公司的QQ2000,在实现时采用的Java的Swing图形包。开发工具用的是Borland公司的Jbuilder4。
四.程序的使用
源程序参见 src.zip.
部分程序运行结果界面图pic.zip.
服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.3。然后应有一个数据库系统,建立数据库javaicq,并且建立表icq和表friend。然后在控制面板中的ODBC数据源中设置数据源javaicq建立与数据库的连接。然后运行javac Server.java ,java Server及可。 客户端:只要有有java环境jdk就可以建议jdk1.3。然后运行javac New.java ,java New及可。
五.参考资料:
Java2图形设计卷二:Swing (美) David M.Geary Java2 编程思想(美)Bruce Eckel UNIX网络编程(第一卷)(美)W.Richard Stevens
另外,该程序在端口上选取的是固定的一个端口,所以在同一机器只能运行一次,如果单机调试可以修改客户程序的udp端口(我的5000目录是个例子,将int udpPORT=5001,int sendPort=5000改为int udpPORT=5000,int sendPort=5001)