用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧计算机应用

用JAVA制作ICQ

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 11:56:20
出流,然后双方通过该输入输出流来相互传递信息,一旦收到客户方的连接请求,服务器accept()方法返回一个新建的Socket对象。客户端然后向服务器发送消息,比如注册,登录,查找好友等,服务器收到来自客户的请求后,针对不同的消息处理请求, 虽然UDP不可靠但是对于icq可靠性并不太重要,而且UDP快速,所以客户间发送信息通过UDP。用户登录时通过类DatagramPacket和DatagramSocket创建UDP包括其本地接受端口以及发送端口,默认端口为5000和5001,通过取得的好友的IP地址来向好友发送消息(send(DatagramPacket)和接受消息(receive(DatagramPacket))。当用户通过UDP收到消息后,可以通过DatagramPacket的方法InetAddress getAddress()得到对方的ip地址,通过对好友列表比较以判断是谁并提示用户收到某某的消息,然后用户选择该用户查看消息,如果好友列表没有该人就显示收到陌生人的消息。用户可以按陌生人按钮查看消息。

用户注册。当服务器收到用户的注册请求,便开始接受客户传第的信息,诸如客户的呢称啦,性别,籍贯,头像,个人资料等,接受完毕后,便通过JdbcOdbc与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其Jicq号码,并在数据库中注册用户的IP地址,然后更新其Status为1即用户在线。客户收到服务器返回的信息后,便打开主程序窗口,并同时开始创建UDP以便在用户之间建立联系。
******部分程序如下:

void jButton1_mouseClicked(MouseEvent e) { try{ Socket socket=new Socket(InetAddress.getByName(sername),serverport);//连接服务器 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println(/new/);//告诉服务器我要注册 out.println(nickname.getText().trim());//告诉服务器我的呢称,密码,email,资料 out.println(password.getPassword());//以及头像号等信息 out.println(email.getText().trim()); out.println(info.getText().trim()); out.println(place.getSelectedItem()); out.println(headpic.getSelectedIndex());//head picindex int no; no=Integer.parseInt(in.readLine()); //System.out.print(no); String str=/ /; str=in.readLine().trim();//从服务器取得状态 if(str.equals(/false/)) JOptionPane.showMessageDialog(this,/对不起,出错了:- (/,/ok/,JOptionPane.INFORMATION_MESSAGE);//失败就警告 else{//成功就打开主程序 JOptionPane.showMessageDialog(this,/your javaicq#is/+no,/ok/,JOptionPane.INFORMATION_MESSAGE); this.dispose(); MainWin f2=new MainWin(no,sername,serverport); f2.setVisible(true);} //System.out.println(///n/); //}while(!str.equals(/ok/)); // socket.close(); }catch(IOException e1){} } }
用户登录。在客户端,用户输入其jicq号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JdbcOdbc读取数据库,然后与用户输入的信息比较,如果相同就向客户返回成功消息并将其Status字段设为1表示上线了以及注册其IP地址,否则返回错误,如果客户收到成功信息就打开主窗口,否则提示出错。如果成功,便打开主程序窗口,并同时开始创建UDP以便在用户之间建立联系。然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的friend表,得到好友的号码后,再在icq表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,比如头像,呢称。并且建立几个矢量(Vector)用以存储好友的呢称,jicq号码,头像编号,ip地址等信息。
部分程序如下:(程序流程图与注册差不多,略)

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(

上一页  [1] [2] [3] [4] [5] [6]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:18,984.38000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号