`
antkingwei
  • 浏览: 41836 次
  • 性别: Icon_minigender_1
  • 来自: 日照
社区版块
存档分类
最新评论

简单聊天室的实现

    博客分类:
  • Java
阅读更多

效果图

 哎呀,还有点不会用,刚明白怎么添加图片,最仅这两天会吧以前做过的东西传到这上面来,希望大家关注

服务器端的代码

import java.awt.BorderLayout;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class chatServer extends JFrame {
	private static JTextArea jta = new JTextArea();
	private ServerSocket server;
	private static List<Socket> list = new ArrayList<Socket>();
    private ExecutorService exec;
	public chatServer(){
		setLayout(new BorderLayout());
		add(new JScrollPane(jta),BorderLayout.CENTER);
		setTitle("聊天室服务器");
		setSize(500,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		try{
			  server = new ServerSocket(54321);
			  exec = Executors.newCachedThreadPool();
			 
			 jta.append("服务器已经启动");
			  Socket client = null;
			  while(true){
				  client =server.accept();
				  list.add(client);
				  exec.execute(new Task(client));
				  
			  }
		}catch(Exception e){
			
		}
		
	}
	static class Task implements Runnable{
		private Socket client;
        private DataInputStream fromclient;
        private DataOutputStream toclient;
        String msg;
		public Task(Socket client) throws IOException{
		   this.client = client;			
		   fromclient = new DataInputStream(client.getInputStream());
		
		}
		public void run() {
			try{
				while((msg=fromclient.readUTF())!=null){
					msg = "["+client.getPort()+"]说:"+msg;
					jta.append(msg+"\n");
					sendMessage();
				}
				
			}catch(Exception e){
				
			}
			
		}
		public void sendMessage() throws IOException{
			for(Socket client:list){
			toclient= new DataOutputStream(client.getOutputStream());
			toclient.writeUTF(msg);
			}
		}
		
	}
	public static void main(String[] args){
		new chatServer();
	}

}

 客户端的实现代码:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class newClient extends JFrame{
	private JPanel p= new JPanel();
	private JTextField jtf1 = new JTextField();
	
    private JTextArea jta1 = new JTextArea();
    private DataOutputStream toserver ;
    private DataInputStream fromserver;
    private JButton button  = new JButton("发送");
 
     public newClient(){
    	p.setLayout(new BorderLayout());  	
    	JPanel p2 = new JPanel();
    	p2.setLayout(new BorderLayout());   	
    	p2.add(jtf1,BorderLayout.CENTER);
    	p2.add((new JLabel("NND 你一定不要忘了曾经的承诺和坚持")),BorderLayout.SOUTH);
    	p2.add(button,BorderLayout.EAST);
    	p.add(p2,BorderLayout.SOUTH);
    	p.add(jta1,BorderLayout.CENTER);
    	this.setTitle("最简单的聊天室-----antking");
    	this.add(p);
    	this.setSize(500,300);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.setVisible(true);
    	button.addActionListener(new buttonListener());
    	
    	try {
    		
			Socket client = new Socket("localhost",54321);
			toserver = new DataOutputStream(client.getOutputStream());
			fromserver = new DataInputStream(client.getInputStream());
			while(true){
			String msg =fromserver.readUTF();
			if(msg!=null)
			jta1.append(msg+"\n");
			}
		} catch (UnknownHostException e) {
		
			e.printStackTrace();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
     }
     private class buttonListener implements ActionListener{

	
		public void actionPerformed(ActionEvent e) {
			
			String str = jtf1.getText().toString();
			
			try {
	
				toserver.writeUTF(str);
				
				
				toserver.flush();
				
			 } catch (UnknownHostException e1) {
			
				e1.printStackTrace();
			 } catch (IOException e1) {
				
				e1.printStackTrace();
			}
			
			
		}
    	 
     }
	public static void main(String[] args) {
		new newClient();

	}

}
 
0
2
分享到:
评论

相关推荐

    简单聊天室实现

    【标题】"简单聊天室实现"揭示了一个编程项目,它基于Beetle库构建了一个基本的聊天室应用程序。Beetle通常是一个用C#编写的高性能Socket TCP组件,旨在简化网络通信,特别是对于实时和高吞吐量的应用场景。在这个...

    C# - 简易聊天室实现网页

    首先,让我们理解标题"**C# - 简易聊天室实现网页**"所涉及的核心概念。C#是微软推出的一种面向对象的编程语言,其设计目标是提高软件开发的生产力,特别是在.NET平台上。ASP.NET是.NET框架的一部分,用于构建Web...

    python编写简易聊天室实现局域网内聊天功能

    这个简易聊天室的实现为初学者提供了一个网络编程的实用案例,帮助他们理解网络通信的基本概念,如IP通信、端口绑定、消息的发送和接收等。尽管这个聊天室的功能比较简单,但它为构建更复杂的网络应用打下了良好的...

    【11.简单聊天室实现】

    简单聊天室实现】是一个基于QT客户端技术的项目,主要目标是构建一个基本的在线聊天平台,让用户能够进行实时的文本交流。在这个项目中,QT客户端库扮演了核心角色,它提供了丰富的功能和易用的API,使得开发者可以...

    Java写的简易聊天室

    总结起来,"Java写的简易聊天室"项目涵盖了以下关键知识点: 1. Java的Socket网络编程,包括 `ServerSocket` 和 `Socket` 类。 2. 客户端与服务器之间的连接建立和断开过程。 3. 使用线程处理客户端的并发连接。 4....

    基于nio的简易聊天室

    本项目"基于nio的简易聊天室"旨在通过NIO技术实现一个简单的聊天室服务端和客户端,其特点是有图形用户界面(GUI)供用户交互。 NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。在这...

    linux下实现简单的聊天室

    在Linux环境下,构建一个简单的聊天室是一个典型的网络编程任务,主要涉及到UDP(User Datagram Protocol)协议的应用。UDP是一种无连接的、不可靠的传输层协议,适合于对实时性要求较高但对数据完整性要求不那么...

    简易聊天室实现ChatRoom

    本文将深入探讨如何实现一个名为"ChatRoom"的简易聊天室,基于描述中的源代码。 首先,我们需要了解聊天室的基本功能:用户注册、登录、发送消息、接收消息以及退出聊天室。这些功能的实现通常涉及到以下几个技术点...

    JSP实现简单的聊天室

    **JSP实现简单的聊天室** 在Web开发领域,JavaServer Pages (JSP) 是一种用于构建动态网页的技术,它允许开发者将HTML代码与Java代码相结合,以实现服务器端的业务逻辑处理。本项目以"JSP实现简单的聊天室"为例,...

    Java课设-简单聊天室的实现源码.zip

    Java课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zipJava课设-简单聊天室的实现源码.zip...

    Android简易版聊天室

    在本文中,我们将深入探讨如何构建一个简单的Android聊天室应用,以及它与PC服务器端和客户端的交互。这个"Android简易版聊天室"项目旨在提供一个基础架构,用于理解多平台间实时通信的工作原理。 首先,我们要理解...

    java实现简易聊天室

    Java 实现简易聊天室 本文将对 Java 实现简易聊天室的设计和实现进行详细的分析和讲解。该聊天室程序主要由五个 Java 源文件组成,即 Server.java、Objecting.java、LogIn.java、ClientUser.java 和 Client.java。...

    ActiveMQ实战——实现一个简易版的聊天室

    在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...

    聊天室实现

    聊天室实现 本文主要介绍了基于 Java 语言的聊天室系统的设计和实现。该系统主要由登录页面、验证页面、聊天室页面、离开页面、查看聊客页面、帮助页面等页面构成。整个设计简洁明了、实用,使用简单。本系统实现了...

    利用servlet技术实现一个简单的聊天室

    实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...

    简易聊天室(asp.net实现)

    【简易聊天室(asp.net实现)】 在信息技术领域,构建一个在线聊天室是常见的实践项目,它可以帮助开发者熟练掌握Web应用程序的设计与实现。本项目基于ASP.NET和C#语言,旨在提供一个简单、实用的实时通信平台。ASP...

    简单的聊天室C#(asp.net)

    在本项目中,"简单的聊天室C#(asp.net)"是一个使用C#语言和ASP.NET框架构建的网络应用程序,旨在实现一个基本的在线聊天功能。这个项目包含了多个小实验和一个综合实验,覆盖了从基础到进阶的ASP.NET开发技术。...

    简易聊天室

    (1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 ...

    基于c语言的简易聊天室

    本文将深入探讨如何基于C语言构建一个简易聊天室,这是一个非常实用的基础项目,可以帮助初学者更好地理解和掌握网络编程的基本概念。 首先,我们要了解的是TCP/IP协议族,它是互联网通信的基础。在C语言中,我们...

    QT tcp 最简单聊天室实现

    对于QT中QTcpServer和QTcpSocket的应用,最简单化的逻辑代码设计,附带打包程序,总代码少的批爆,适合初学和参考手册用。

Global site tag (gtag.js) - Google Analytics