论坛首页 Java企业应用论坛

多用户的P2P在线聊天程序,完全源码 连载五 编写客户端用户监听线程

浏览 2380 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-16   最后修改:2010-03-16

本例开发实现了一个多用户的P2P在线聊天程序,C/S结构,客户端可发送消息,然后其他的用户接收到该消息并将其显示在界面中,服务器对信息进行有关处理并向适当的用户发送,同时在服务器端还将显示所有的在线用户,网络管理员即服务器端管理员可选中某用户并将其踢出该聊天室。

本篇为第二篇,如果您是第一次进来请从第一篇开始,此程序不用修改完全可用,第一篇地址:http://java161.iteye.com/blog/616113

 

 

   客户端用户监听线程用来监听从服务器发送过来的信息,并进行相应的处理。客户端监听具有Socket的输入流对象:

   protected DataInputStream inStream;

   inStream=new DataInputStream(connSock.getInputStream());

   同时服务器用户监听相似,该线程需要实例化一个与服务器Socket连接的输入流,然后从该输入流中读取信息,并加以分析:

    String str=inStream.readUTF();

    if(str.equals("quit"))

    {

      applet.textArea1.append("\n 对不起,你被管理员踢出来了,请重新登陆!\n");

      applet.login=false;

      applet.label1.setText("用户名:");

      applet.button1.setLabel("登陆");

    }

    else

  {

       StringTokenizer st=new StringTokenizer(str,":%");

       applet.textArea1.append(st.nextToken()+" 说:"+st.nextToken()+"\n");

}

从上面的程序可看出,当接收到的信息为“quit”表示服务器端网络管理员已经将你踢出;若为其他信息则将所得到的信息显示在主页面中。

 

 

程序清单:

package Client;

import java.awt.*;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2010</p>
 *
 * <p>Company: </p>
 *
 * @author
www.jianfei5u.com
 * @version 1.0
 */
public class UserThread extends Thread
{
    protected Socket connectionSocket;
    protected DataInputStream inStream;
    Applet1 applet=null;

    public UserThread(Applet1 applet,Socket connSock) throws IOException
    {
        connectionSocket=connSock;
        this.applet=applet;
        inStream=new DataInputStream(connSock.getInputStream());
    }

    protected void closeConnection()
    {
        try
        {
            connectionSocket.close();
        }
        catch(Exception oops)
        {}
        stop();
    }

    public void run()
    {
        while(true)
        {
            try
            {
                String str=inStream.readUTF();
                if(str.equals("quit"))
                {
                    applet.textArea1.append("\n 对不起,你被管理员踢出来了,请重新登陆!\n");
                    applet.login=false;
                    applet.label1.setText("用户名:");
                    applet.button1.setLabel("登陆");
                }
                else
                {
                    StringTokenizer st=new StringTokenizer(str,":%");
                    applet.textArea1.append(st.nextToken()+" 说:"+st.nextToken()+"\n");
                }
            }
            catch(Exception oops)
            {}
        }//end of while
    }//end of Run()
}//end of class

 

 

未完待续。。。下篇 通信流程(实例P2P原理分析图)和运行结果

 

地址:http://java161.iteye.com/blog/616677

 

 

 

 

   发表时间:2010-03-16  
多用户的P2P在线聊天程序,终于完成

多用户的P2P在线聊天程序,完全源码 连载一 监听新用户加入

多用户的P2P在线聊天程序,完全源码 连载二 编写用户实例类

多用户的P2P在线聊天程序,完全源码 连载三 编写监听用户信息类

多用户的P2P在线聊天程序,完全源码 连载四 编写客户端Applet类

多用户的P2P在线聊天程序,完全源码 连载五 编写客户端用户监听线程

多用户的P2P在线聊天程序,完全源码 连载六 通信流程(实例P2P原理分析图)和运行结果
0 请登录后投票
   发表时间:2010-03-16  
博主能不能打包呢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics