`
郑云飞
  • 浏览: 818325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单人聊天

阅读更多
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实现多人聊天和单人聊天

    在“stomp实现多人聊天和单人聊天”的场景中,我们需要理解以下几个关键知识点: 1. **WebSocket**:WebSocket是HTML5引入的一种在单个TCP连接上进行全双工通信的协议。传统的HTTP协议是请求-响应模式,而WebSocket...

    springboot+websocket聊天室(多人聊天,单人聊天)

    多人聊天是通过`/topic/messages`主题广播消息实现的,而单人聊天可以通过维护用户之间的私有会话,将消息发送到特定用户的通道来实现。为了支持用户登录和会话管理,可以结合Spring Security或自定义的身份验证机制...

    单人聊天室 一个小例子

    【标题】:“单人聊天室 一个小例子” 这个项目是一个基础的在线聊天室示例,主要目的是为了展示聊天室的基本构建过程。它不涉及复杂的AJAX(异步JavaScript和XML)技术,也不支持多用户同时在线聊天。这个聊天室的...

    Springboot+websocket 实现多人聊天室/单人聊天

    这是一个简单使用websocket实现多人聊天室,单人聊天室的demo,里面使用的是最原始的websocket的方法,附有客户端界面可以直接跑起来发送消息看效果。 该项目对应刚刚接触websocket技术是比较有用的。 2019-10-11的...

    表情发送单人聊天

    "表情发送单人聊天"这个功能涉及到的主要知识点包括Android UI设计、事件处理、数据序列化以及网络通信。下面将详细阐述这些技术点。 首先,Android UI设计是整个应用的基础。在创建一个单人聊天界面时,我们需要...

    Java课设,实现了单人聊天和多人聊天.zip

    本Java课程设计实现了一个聊天应用程序,涵盖了单人聊天和多人聊天的功能,适合用作毕业设计项目。该项目提供了完整的源代码,包括项目说明文档,确保在Window 10/11操作系统环境下运行无误。在压缩包中,用户可以...

    IDEA开发环境实现单人聊天服务器,使用node开发,JavaScript语言

    IDEA开发环境实现单人聊天服务器,使用node开发,JavaScript语言

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

    1. **点对点单人聊天**:在P2P系统中,每个节点都可以直接与其他节点通信。当用户A想要向用户B发送消息时,A的节点会创建一个Socket连接到B的节点。数据通过`Socket.getOutputStream()`写入,然后通过`Socket....

    android 单人聊天多人聊天室+文件传输

    在Android平台上开发即时通讯(Instant Messaging,简称IM)应用,如单人聊天、多人聊天室以及文件传输功能,是一项常见的任务。以下将详细介绍这些功能的实现,并基于提供的压缩包文件名称"androididimASmack"来...

    基于UDP或者TCP的单人对单人的聊天室

    【标题】:基于UDP或TCP的单人对单人聊天室实现详解 【描述】:在计算机网络通信中,UDP(用户数据报协议)和TCP(传输控制协议)是两种常见的传输层协议,它们各自拥有不同的特点和应用场景。本项目提供了一个简单...

    Html5 WebSocket聊天功能(单人+所有人)

    在本项目"Html5 WebSocket聊天功能(单人+所有人)"中,开发者实现了基于WebSocket的聊天功能,涵盖了点对点私聊和面向所有人的群聊模式。下面将详细阐述相关知识点。 首先,WebSocket协议是一种在客户端和服务器...

    大学生计算机网络课程期末作业java聊天系统(多人聊天室)原创

    【标题】中的“大学生计算机网络课程期末作业java聊天系统(多人聊天室)原创”表明这是一个由大学生完成的项目,作为其计算机网络课程的期末作业。这个项目是一个基于Java编程语言实现的聊天系统,具备多人聊天的...

    基于nginx负载均衡的集群聊天系统.zip

    功能点有添加好友、单人聊天、群组聊天等 基于nginx负载均衡的集群聊天系统,其中技术点有网络方面、数据库方面、线程安全方面;功能点有添加好友、单人聊天、群组聊天等 基于nginx负载均衡的集群聊天系统,其中技术...

    基于TCP的网络聊天室的设计(一步一步教你CSocket网络编程)

    客户端能够发出连接请求,能编辑发送信息,可以指定发给单人或所有人,能显示聊天人数,上线下线用户等。 二、 通信规范的制定 服务请求规范: 服务器端: (1) 创建一个UDP的套接字,接受来自客户端的广播请求,...

    P2P聊天程序(JAVA)

    【P2P聊天程序(JAVA)】是一种网络通信应用程序,它使用对等网络(P2P,Peer-to-Peer)架构来实现用户之间的实时交流。P2P技术允许网络中的每个节点既是客户端也是服务器,因此在聊天程序中,每个用户都可以发送和...

    java点对点聊天系统

    点对点(P2P)聊天系统是一种网络通信模型,其中每个参与者,即用户,都可以作为服务器和客户端的角色,直接与其他参与者交换数据。在Java中实现这样的系统涉及到多个核心技术领域,包括网络编程、多线程、数据编码...

    java及时在线聊天系统

    【Java及时在线聊天系统】是一种基于Java技术实现的实时通讯平台,它采用了现代软件开发中的MVC(Model-View-Controller)设计模式,以确保代码的可维护性和可扩展性。MVC模式将应用程序分为三个主要部分:模型、...

    基于 C# WinForm sockets的在线聊天软件源码.zip

    基于 C# WinForm sockets的在线聊天软件 ... (2) 好友与群组列表:显示好友和群组的列表; (3) 个人信息模块:显示和...(6) 单人聊天:通过该界面和好友进行一对一聊天; (7) 多人聊天:通过该界面进行群组多人聊天。

    java 实现 聊天室功能(C/S)

    Java 实现的C/S(客户端/服务器)架构的聊天室是一种常见的网络通信应用,它基于Socket编程技术,能够实现用户间的实时交流。本项目不仅包含了基本的文本聊天功能,还扩展了其他实用特性,如截屏、文件传输以及字体...

    java局域网聊天系统.zip

    客户端的功能有:登陆、注册、群发消息、单人聊天、显示在线人数、显示在线用户、群发文件、单人发送文件、清除聊天记录。 服务器端的功能有:开启服务器,关闭服务器、发送系统消息、强制下线、显示在线用户、显示...

Global site tag (gtag.js) - Google Analytics