`

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

阅读更多

本例开发实现了一个多用户的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

 

 

 

 

分享到:

相关推荐

    局(广)域网多人聊天程序,支持文件传输-MiniChat

    MiniChat是本人编写的一款多人聊天程序,主要用于局域网或广域网内用户间的实时通讯。用户界面美观友好,支持公共聊天、私人聊天、聊天记录、文件传输、任务栏实时通知等功能。该程序采用C/S三层架构,多线程Socket...

    基于C语言开发的p2p聊天软件系统.zip

    模拟服务器的设计采用了经典的服务器监听设计,服务器在端口,8000 进行监听,当有客户端发送消息时开辟一个新的线程对其内容进行处理并回复。 本项目的界面包括客户端和模拟服务器两大部分,客户端包括登录界面、...

    易语言客户端源码,易语言服务器源码,易语言P2P交互

    易语言P2P交互源码,P2P交互,P2P监听,启动线程_,创建进入许可证_,删除进入许可证_,CreateThread1,CreateThread,关闭句柄,InitializeCriticalSection,DeleteCriticalSection,GetMessage,TranslateMessage,...

    vc++ 应用源码包_3

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    java源码包---java 源码 大量 实例

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    vc++ 应用源码包_1

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    vc++ 应用源码包_2

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    vc++ 应用源码包_6

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    vc++ 应用源码包_5

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...

    JAVA上百实例源码以及开源项目源代码

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    java源码包2

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    java源码包3

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    java源码包4

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    JAVA上百实例源码以及开源项目

     Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket...

    vc++ 开发实例源码包

    另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 FreeBird2011Dlg.h 主对话框类头文件 MultiGroup.h 多播组类头文件 UserLink.h 用户链表类头文件 ListenSocket.h 侦听接口...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,...

Global site tag (gtag.js) - Google Analytics