首先搞一个多线程的服务器端出来先:
思路:new 一个server 在一个死循环中不断检测socket连接,每简历一个连接就将它放入一个列表,并启动服务线程服务。
**
具体注释看程序啦。。SA没给我什么技术,但是规范的也学到5少。。
package com.sun.server;
/**
* @author Sun.zhong.
* @version 1.0
*/
import java.net.*;
import java.util.ArrayList;
import java.io.*;
/**
* @param client :socket object.
* @param ArrayList : list for all the socket connetions.
*
*/
public class Server2 extends Thread {
private Socket client;
private ArrayList list;
public Server2(Socket c,ArrayList list) {
this.list = list;
this.client = c;
}
/**
* override the methord run().
*
*/
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
while (true) {
String data = in.readLine();
/**
* update the information pool here.
* InformationManager.setData(data);
*/
/**
* list all the socket and send the message to the client .
*/
for(int i =0;i<list.size();i++){
Socket socket = (Socket)list.get(i);
if(socket != this.client){
/**
* broadcast the message from the information pool.
* PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(InformationManager.getData());
*/
//broadcast the message from the client..
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(data);
out.flush();
}
}
if (data.equals("end"))
break;
}
client.close();
} catch (IOException ex) {
} finally {
}
}
/**
* entrance to the app.
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(1000);
ArrayList list = new ArrayList();
int i = 0;
while (true) {
// transfer location change Single User or Multi User
Socket socket = server.accept();
i++;
list.add(socket);
System.out.println("第 "+i+" 个client 建立连接");
Server2 mu = new Server2(socket,list);
mu.start();
}
}
}
**
**
2. 服务器端就是甘啦。。。宜家到客户端:
客户端相对简单,只要将信息的读取同信息的发送分开线程来做就不会导致阻塞啦。。。
**
package com.sun.client;
/**
* @author Sun.zhong
* @version 1.0
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
*
* @param server:Socket object.
*
*/
public class Clients {
static Socket server;
/**
* entrance to the client.
* @param args
* @throws UnknownHostException
* @throws IOException
*/
public static void main(String args[]) throws UnknownHostException, IOException{
server=new Socket(InetAddress.getLocalHost(),1000);
**
BufferedReader br=new BufferedReader(new InputStreamReader(server.getInputStream()));
/**
* start the get data thread.
*/
Clients c = new Clients();
GetDataThread gdt = c.new GetDataThread(br);
gdt.start();
/**
* read data from server.
*/
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
}
}
class GetDataThread extends Thread{
private BufferedReader br;
public GetDataThread(BufferedReader br){
this.br = br;
}
public void run(){
try {
while(true){
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
**
记录:
hihi
hello
在搞毛
没搞毛
顶
顶毛
哈哈
哈毛
顶你个肺
顶你个肺
顶你个肺
**
打完,收工!。
分享到:
相关推荐
《C++实现的Linux多线程聊天室》 在计算机编程领域,多线程技术是提升程序并发性能的重要手段,特别是在服务器端应用中,如聊天室。本项目以C++语言在Linux环境下实现了一个多线程聊天室,利用了Linux系统强大的多...
Java多线程聊天室源码是一个实用的编程示例,它展示了如何在Java环境中实现一个基本的多用户交互系统。这个源代码对于初学者来说是一个很好的学习资源,可以帮助他们理解和应用Java的多线程概念。下面我们将深入探讨...
Java多线程聊天室是一个基于Java编程语言实现的实时通讯应用,它利用多线程技术来处理并发用户连接和通信。在这个项目中,有至少两个关键的类:Server和Control,它们分别扮演着服务器端和客户端控制台的角色。在...
本项目"**C# Socket多线程聊天室**"就是一个典型的示例,它展示了如何利用C#的Socket类以及多线程技术创建一个简单的聊天应用。以下是关于这个项目的详细知识点: 1. **Socket编程**: Socket是网络通信中的基本组件...
【C#多线程聊天室】是一个基于C#编程语言实现的项目,它利用多线程技术构建了一个能够支持多人实时交流的聊天环境。在这个聊天室中,用户不仅可以参与公共的群聊,还能够进行一对一的私聊。下面将详细探讨这个项目中...
【基于Swing的多线程聊天室】是一个Java应用程序,它利用了Swing库来构建图形用户界面(GUI)并采用多线程技术实现多用户之间的实时通信。Swing是Java Standard Edition(Java SE)的一部分,提供了丰富的组件库用于...
CSocket多线程聊天室源码是一个基于MFC(Microsoft Foundation Classes)库中的CSocket类实现的网络通信项目。此源码提供了在一个多线程环境中创建一个简单的聊天室功能,让多个用户能够实时交流。MFC是微软为...
《C# Socket 多线程聊天室》 在IT领域,网络编程是不可或缺的一部分,而C#语言提供了强大的网络通信支持。本项目“C# Socket 多线程聊天室”是一个针对中高级开发者设计的实践案例,旨在展示如何利用C#的Socket库和...
### Java多线程聊天室程序知识点详解 #### 一、程序概述 本程序是一个基于Java Socket编程技术开发的多线程聊天室应用。它能够支持多个用户进行群聊或者私聊,通过网络通信来实现消息的实时传递。下面将详细介绍该...
《多线程聊天室:构建高效并发服务器》 在IT领域,尤其是网络编程中,多线程技术常常被用于构建高性能、高并发的服务器,如本文档所提及的"多线程聊天室"。服务器端的设计是整个系统的核心,它需要处理大量用户的...
本项目"**C#Socket 多线程聊天室A**"是一个很好的学习资源,它展示了如何利用C#的Socket类进行网络通信以及如何通过多线程来处理并发用户的需求。 首先,我们要理解Socket。Socket是网络编程的基础,它提供了进程间...
本篇将深入探讨如何利用C#实现TCP多线程聊天室的核心知识点。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保了数据的正确顺序和完整性,适合用于需要高稳定性的应用,如...
C++语言编写,SOCKET套接字通信,分服务器和客户端,多线程模型,Win32控制台。 首先聊天室分为服务端和客户端,通过TCP连接通信。运行顺序为: 1.首先打开服务服; 2.打开客户端,用户输入名字,连接到服务端后...
一个多线程聊天室(C_S)的源代码 可以多开的聊天程序 试试看吧
新项目基于TCP Socket实现的多线程聊天室程序c++源码(含服务端+客户端).zip新项目基于TCP Socket实现的多线程聊天室程序c++源码(含服务端+客户端).zip新项目基于TCP Socket实现的多线程聊天室程序c++源码(含服务端+...
Java多线程聊天室是一种基于Java编程语言实现的实时通信应用,它利用了Java的多线程特性来处理多个客户端的并发连接。在本项目中,我们有两个主要的组件:SocketTestServer.jar(服务器端)和SocketTestClient.jar...
【标题】"能注册的TCP多线程聊天室"是一个基于TCP/IP协议的网络通信程序,它具有用户注册功能,并且能够将用户信息保存到XML配置文件中。在这个系统中,多线程技术被用于提高服务性能和并发处理能力。 在TCP/IP通信...