本例开发实现了一个多用户的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技术在即时通讯应用中的典型实例,它摒弃了传统客户端-服务器模式,使每个用户节点都可以既是服务提供者也是服务消费者,实现了高效、灵活的通信方式。本篇文章将深入探讨基于C#开发的P2P点对...
标题中的"P2P-多用户在线聊天室(Java源码)"表明这是一个基于P2P技术的、允许多个用户实时交流的在线聊天室系统,其核心编程语言是Java。P2P,即对等网络,是一种分布式网络架构,其中每个参与者既是服务的消费者也...
【VC点对点聊天室源码】是一种基于Visual C++(简称VC)开发的P2P(Peer-to-Peer)网络通信系统,主要用于实现用户之间的实时聊天功能。在这个项目中,我们将深入探讨P2P技术在聊天应用中的实现,以及VC编程的相关...
这个基于Java的源码项目是一个P2P(Peer-to-Peer)多用户在线聊天室,它允许多个用户通过网络进行实时通信。在Java编程领域,这样的应用通常涉及到网络编程、多线程、对象序列化以及可能的GUI设计等多个重要知识点。...
"基于Java的P2P--多用户在线聊天室(Java源码).zip" 这个标题表明我们所面对的是一个使用Java编程语言开发的P2P(Peer-to-Peer)网络应用,具体实现了一个多用户可以同时参与的在线聊天室。P2P技术是一种分布式网络...
该资源是一个基于Java编程语言实现的P2P(Peer-to-Peer)多用户在线聊天室的源码。这个项目展示了如何构建一个简单的网络通信系统,让多个用户能够实时地进行文字交流。以下是对这个源码项目的详细分析和知识点介绍...
该资源是一个基于Java编程语言开发的P2P(Peer-to-Peer)多用户在线聊天室的实例源码。P2P技术在通信领域中广泛应用,它允许网络中的每个节点既是客户端也是服务器,使得数据传输更加分散和高效。在这个项目中,...
使用多线程或异步方法处理收发消息,以保持用户界面的响应性。 ```csharp class Message { public string Sender { get; set; } public string Content { get; set; } public byte[] Serialize() { // 使用...
这个基于Java的实例源码是一个P2P(对等网络)多用户在线聊天室的实现,它展示了如何在Java环境中构建一个实时通信的应用程序。在本文中,我们将深入探讨这个项目涉及的关键技术、设计模式以及Java编程的核心概念。 ...
为了支持多用户聊天,我们需要在每个节点上维护一个用户列表,并且为每个连接创建一个新的线程来处理单独的聊天会话。这样,节点可以同时接收和发送多个会话的数据,实现了多人聊天的功能。 3. **用户自由加入和...
易语言P2P客户端源码是实现P2P通信的用户端程序。它通常包括以下功能模块: 1. **连接管理**:客户端需要寻找并连接到P2P网络中的其他节点,建立通信通道。 2. **数据交换**:客户端可以发送和接收数据,这可能涉及...
总的来说,这个C#编写的P2P聊天软件源码为我们提供了一个学习网络编程、P2P架构以及C#高级特性的实践平台。通过对源码的分析和学习,开发者可以掌握网络通信的基本原理,理解P2P网络的运作方式,并提升在实际项目中...
.NET P2P聊天程序合集是一个集合,包含了多个基于C#编程语言实现的P2P(Peer-to-Peer)聊天应用程序。这些程序为开发者提供了一个学习和参考的平台,特别是对于那些想要了解如何构建分布式通信系统,特别是聊天应用...
C/S模式,即客户端/服务器模式,是一种网络通信模型,广泛应用于各种分布式系统中,包括我们今天要讨论的TCP点对点聊天程序。这个C#实现的程序允许在局域网内的多台计算机之间进行通信,它巧妙地将客户端与服务器...
【P2P聊天软件VC源码】是一款基于VC++开发的聊天工具,其设计灵感来源于QQ,具有丰富的功能,包括文字聊天、语音聊天以及文件传输。对于想深入了解网络通信技术,尤其是P2P(对等网络)应用开发的开发者而言,这是一...
4. **多线程处理**:为了提高性能和用户体验,源码可能采用了多线程技术,使得文件下载可以在后台进行,而不会阻塞用户界面。 5. **数据结构和算法**:在P2P网络中,数据的组织和查找通常涉及到复杂的算法,例如DHT...
MiniChat是本人编写的一款多人聊天程序,主要用于局域网或广域网内用户间的实时通讯。用户界面美观友好,支持公共聊天、私人聊天、聊天记录、文件传输、任务栏实时通知等功能。该程序采用C/S三层架构,多线程Socket...
5. **多线程处理**:为了同时处理多个客户端的连接请求,服务端通常使用多线程或异步I/O技术。VC 2008支持Windows API中的线程函数,如`CreateThread()`,以及C++标准库中的`std::thread`。 6. **错误处理**:在...
模拟服务器的设计采用了经典的服务器监听设计,服务器在端口,8000 进行监听,当有客户端发送消息时开辟一个新的线程对其内容进行处理并回复。 本项目的界面包括客户端和模拟服务器两大部分,客户端包括登录界面、...
通过学习和分析这个VC聊天程序源码,开发者可以深入理解网络编程的基本原理,如TCP/IP协议栈、套接字编程、多线程处理以及并发连接管理。这对于进一步开发涉及网络通信的VC项目,如文件共享、多人游戏或协同编辑应用...