package test;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client
{
private Socket socket = null;
private class ReceiveThread extends Thread
{
@Override
public void run()
{
while (true)
{
try
{
DataInputStream dis = new DataInputStream(socket.getInputStream());
String receiveMessage = dis.readUTF();
System.out.println("客户端发送消息: " + receiveMessage);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public void start() throws IOException
{
socket = new Socket(InetAddress.getByName("localhost"), 7788);
new ReceiveThread().start();
System.out.println("已经和服务器建立连接\n请输入你要发送的消息 : ");
while (true)
{
Scanner scaner = new Scanner(System.in);
String message = scaner.next();
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
dout.writeUTF(message);
dout.flush();
}
}
public static void main(String[] args) throws IOException
{
Client client = new Client();
client.start();
}
}
package test;
import java.io.*;
import java.net.*;
import java.util.*;
public class Server
{
private ServerSocket ss = null;
private List<Socket> list = new LinkedList<Socket>();
private class ReceiveThread extends Thread
{
private Socket socket = null;
public ReceiveThread(Socket socket)
{
this.socket = socket;
}
@Override
public void run()
{
while (true)
{
if (socket == null)
{
continue;
}
try
{
DataInputStream dis = new DataInputStream(socket.getInputStream());
String receiveMessage = dis.readUTF();
System.out.println("收到客户端发送的消息 :" + socket+ " " + receiveMessage);
send(receiveMessage);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public void send(String msg) throws IOException
{
for (int i = 0; i < list.size(); i++)
{
Socket groupSocket = list.get(i);
OutputStream out = groupSocket.getOutputStream();
DataOutputStream dout = new DataOutputStream(out);
dout.writeUTF(msg);
dout.flush();
out.flush();
}
}
private void start() throws IOException
{
ss = new ServerSocket(7788);
while (true)
{
while (true)
{
Socket socket = ss.accept();
list.add(socket);
new ReceiveThread(socket).start();
}
}
}
public static void main(String[] args) throws Exception
{
System.out.println("服务器开启成功");
new Server().start();
}
}
分享到:
相关推荐
在“stomp实现多人聊天和单人聊天”的场景中,我们需要理解以下几个关键知识点: 1. **WebSocket**:WebSocket是HTML5引入的一种在单个TCP连接上进行全双工通信的协议。传统的HTTP协议是请求-响应模式,而WebSocket...
多人聊天是通过`/topic/messages`主题广播消息实现的,而单人聊天可以通过维护用户之间的私有会话,将消息发送到特定用户的通道来实现。为了支持用户登录和会话管理,可以结合Spring Security或自定义的身份验证机制...
【标题】:“单人聊天室 一个小例子” 这个项目是一个基础的在线聊天室示例,主要目的是为了展示聊天室的基本构建过程。它不涉及复杂的AJAX(异步JavaScript和XML)技术,也不支持多用户同时在线聊天。这个聊天室的...
这是一个简单使用websocket实现多人聊天室,单人聊天室的demo,里面使用的是最原始的websocket的方法,附有客户端界面可以直接跑起来发送消息看效果。 该项目对应刚刚接触websocket技术是比较有用的。 2019-10-11的...
"表情发送单人聊天"这个功能涉及到的主要知识点包括Android UI设计、事件处理、数据序列化以及网络通信。下面将详细阐述这些技术点。 首先,Android UI设计是整个应用的基础。在创建一个单人聊天界面时,我们需要...
本Java课程设计实现了一个聊天应用程序,涵盖了单人聊天和多人聊天的功能,适合用作毕业设计项目。该项目提供了完整的源代码,包括项目说明文档,确保在Window 10/11操作系统环境下运行无误。在压缩包中,用户可以...
IDEA开发环境实现单人聊天服务器,使用node开发,JavaScript语言
1. **点对点单人聊天**:在P2P系统中,每个节点都可以直接与其他节点通信。当用户A想要向用户B发送消息时,A的节点会创建一个Socket连接到B的节点。数据通过`Socket.getOutputStream()`写入,然后通过`Socket....
在Android平台上开发即时通讯(Instant Messaging,简称IM)应用,如单人聊天、多人聊天室以及文件传输功能,是一项常见的任务。以下将详细介绍这些功能的实现,并基于提供的压缩包文件名称"androididimASmack"来...
【标题】:基于UDP或TCP的单人对单人聊天室实现详解 【描述】:在计算机网络通信中,UDP(用户数据报协议)和TCP(传输控制协议)是两种常见的传输层协议,它们各自拥有不同的特点和应用场景。本项目提供了一个简单...
在本项目"Html5 WebSocket聊天功能(单人+所有人)"中,开发者实现了基于WebSocket的聊天功能,涵盖了点对点私聊和面向所有人的群聊模式。下面将详细阐述相关知识点。 首先,WebSocket协议是一种在客户端和服务器...
【标题】中的“大学生计算机网络课程期末作业java聊天系统(多人聊天室)原创”表明这是一个由大学生完成的项目,作为其计算机网络课程的期末作业。这个项目是一个基于Java编程语言实现的聊天系统,具备多人聊天的...
功能点有添加好友、单人聊天、群组聊天等 基于nginx负载均衡的集群聊天系统,其中技术点有网络方面、数据库方面、线程安全方面;功能点有添加好友、单人聊天、群组聊天等 基于nginx负载均衡的集群聊天系统,其中技术...
客户端能够发出连接请求,能编辑发送信息,可以指定发给单人或所有人,能显示聊天人数,上线下线用户等。 二、 通信规范的制定 服务请求规范: 服务器端: (1) 创建一个UDP的套接字,接受来自客户端的广播请求,...
【P2P聊天程序(JAVA)】是一种网络通信应用程序,它使用对等网络(P2P,Peer-to-Peer)架构来实现用户之间的实时交流。P2P技术允许网络中的每个节点既是客户端也是服务器,因此在聊天程序中,每个用户都可以发送和...
点对点(P2P)聊天系统是一种网络通信模型,其中每个参与者,即用户,都可以作为服务器和客户端的角色,直接与其他参与者交换数据。在Java中实现这样的系统涉及到多个核心技术领域,包括网络编程、多线程、数据编码...
【Java及时在线聊天系统】是一种基于Java技术实现的实时通讯平台,它采用了现代软件开发中的MVC(Model-View-Controller)设计模式,以确保代码的可维护性和可扩展性。MVC模式将应用程序分为三个主要部分:模型、...
基于 C# WinForm sockets的在线聊天软件 ... (2) 好友与群组列表:显示好友和群组的列表; (3) 个人信息模块:显示和...(6) 单人聊天:通过该界面和好友进行一对一聊天; (7) 多人聊天:通过该界面进行群组多人聊天。
Java 实现的C/S(客户端/服务器)架构的聊天室是一种常见的网络通信应用,它基于Socket编程技术,能够实现用户间的实时交流。本项目不仅包含了基本的文本聊天功能,还扩展了其他实用特性,如截屏、文件传输以及字体...
客户端的功能有:登陆、注册、群发消息、单人聊天、显示在线人数、显示在线用户、群发文件、单人发送文件、清除聊天记录。 服务器端的功能有:开启服务器,关闭服务器、发送系统消息、强制下线、显示在线用户、显示...