`

多用户的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

 

 

 

 

分享到:

相关推荐

    P2P点对点聊天 源码

    P2P点对点聊天系统是P2P技术在即时通讯应用中的典型实例,它摒弃了传统客户端-服务器模式,使每个用户节点都可以既是服务提供者也是服务消费者,实现了高效、灵活的通信方式。本篇文章将深入探讨基于C#开发的P2P点对...

    P2P-多用户在线聊天室(Java源码).rar

    标题中的"P2P-多用户在线聊天室(Java源码)"表明这是一个基于P2P技术的、允许多个用户实时交流的在线聊天室系统,其核心编程语言是Java。P2P,即对等网络,是一种分布式网络架构,其中每个参与者既是服务的消费者也...

    VC p2p聊天室源码

    【VC点对点聊天室源码】是一种基于Visual C++(简称VC)开发的P2P(Peer-to-Peer)网络通信系统,主要用于实现用户之间的实时聊天功能。在这个项目中,我们将深入探讨P2P技术在聊天应用中的实现,以及VC编程的相关...

    基于Java的源码-P2P-多用户在线聊天室(Java源码).zip

    这个基于Java的源码项目是一个P2P(Peer-to-Peer)多用户在线聊天室,它允许多个用户通过网络进行实时通信。在Java编程领域,这样的应用通常涉及到网络编程、多线程、对象序列化以及可能的GUI设计等多个重要知识点。...

    基于Java的P2P--多用户在线聊天室(Java源码).zip

    "基于Java的P2P--多用户在线聊天室(Java源码).zip" 这个标题表明我们所面对的是一个使用Java编程语言开发的P2P(Peer-to-Peer)网络应用,具体实现了一个多用户可以同时参与的在线聊天室。P2P技术是一种分布式网络...

    java源码:P2P--多用户在线聊天室(Java源码).rar

    该资源是一个基于Java编程语言实现的P2P(Peer-to-Peer)多用户在线聊天室的源码。这个项目展示了如何构建一个简单的网络通信系统,让多个用户能够实时地进行文字交流。以下是对这个源码项目的详细分析和知识点介绍...

    基于Java的实例开发源码-P2P-多用户在线聊天室(Java源码).zip

    该资源是一个基于Java编程语言开发的P2P(Peer-to-Peer)多用户在线聊天室的实例源码。P2P技术在通信领域中广泛应用,它允许网络中的每个节点既是客户端也是服务器,使得数据传输更加分散和高效。在这个项目中,...

    c# 实现p2p通信,c#p2p局域网聊天源码

    使用多线程或异步方法处理收发消息,以保持用户界面的响应性。 ```csharp class Message { public string Sender { get; set; } public string Content { get; set; } public byte[] Serialize() { // 使用...

    基于Java的实例源码-P2P-多用户在线聊天室(Java源码).zip

    这个基于Java的实例源码是一个P2P(对等网络)多用户在线聊天室的实现,它展示了如何在Java环境中构建一个实时通信的应用程序。在本文中,我们将深入探讨这个项目涉及的关键技术、设计模式以及Java编程的核心概念。 ...

    用Java Socket实现一个简单的基于P2P范型的即时聊天系统。

    为了支持多用户聊天,我们需要在每个节点上维护一个用户列表,并且为每个连接创建一个新的线程来处理单独的聊天会话。这样,节点可以同时接收和发送多个会话的数据,实现了多人聊天的功能。 3. **用户自由加入和...

    易语言p2p客户端源码,易语言p2p服务端源码,易语言P2P实例

    易语言P2P客户端源码是实现P2P通信的用户端程序。它通常包括以下功能模块: 1. **连接管理**:客户端需要寻找并连接到P2P网络中的其他节点,建立通信通道。 2. **数据交换**:客户端可以发送和接收数据,这可能涉及...

    c#写的p2p聊天软件源码

    总的来说,这个C#编写的P2P聊天软件源码为我们提供了一个学习网络编程、P2P架构以及C#高级特性的实践平台。通过对源码的分析和学习,开发者可以掌握网络通信的基本原理,理解P2P网络的运作方式,并提升在实际项目中...

    .net P2P聊天程序合集

    .NET P2P聊天程序合集是一个集合,包含了多个基于C#编程语言实现的P2P(Peer-to-Peer)聊天应用程序。这些程序为开发者提供了一个学习和参考的平台,特别是对于那些想要了解如何构建分布式通信系统,特别是聊天应用...

    C/S模式的TCP点对点聊天程序(C#源码)

    C/S模式,即客户端/服务器模式,是一种网络通信模型,广泛应用于各种分布式系统中,包括我们今天要讨论的TCP点对点聊天程序。这个C#实现的程序允许在局域网内的多台计算机之间进行通信,它巧妙地将客户端与服务器...

    p2p聊天软件vc源码

    【P2P聊天软件VC源码】是一款基于VC++开发的聊天工具,其设计灵感来源于QQ,具有丰富的功能,包括文字聊天、语音聊天以及文件传输。对于想深入了解网络通信技术,尤其是P2P(对等网络)应用开发的开发者而言,这是一...

    P2P文件共享——Delphi源码

    4. **多线程处理**:为了提高性能和用户体验,源码可能采用了多线程技术,使得文件下载可以在后台进行,而不会阻塞用户界面。 5. **数据结构和算法**:在P2P网络中,数据的组织和查找通常涉及到复杂的算法,例如DHT...

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

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

    C++_ Socket_P2P联机对话服务端与客户端源码連線

    5. **多线程处理**:为了同时处理多个客户端的连接请求,服务端通常使用多线程或异步I/O技术。VC 2008支持Windows API中的线程函数,如`CreateThread()`,以及C++标准库中的`std::thread`。 6. **错误处理**:在...

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

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

    CS结构 VC 聊天程序.rar

    通过学习和分析这个VC聊天程序源码,开发者可以深入理解网络编程的基本原理,如TCP/IP协议栈、套接字编程、多线程处理以及并发连接管理。这对于进一步开发涉及网络通信的VC项目,如文件共享、多人游戏或协同编辑应用...

Global site tag (gtag.js) - Google Analytics