`
高级java工程师
  • 浏览: 410809 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用JAVA实现类似于QQ聊天

阅读更多
由于这几天挺忙的,以前写的小东西也没有时间去改了,呵呵~

这个是利用java.net包下的ServerSocket和Socket写的,先分别在服务器端和客户端建立两个流,利用了Socket类下的getOutputStream和getOutputStream两个方法,其他的和对流的操作是一样的。

 

由于代码写的比较多的,都写上来,恐怕看起来会很乱很费事。这里只列举一部分,一个框架思路。写的比较匆忙,注释懒的写了,呵呵~

逻辑层只列举一个Server端,Client端和Server端是一样的,只是在实例化一个Socket对象的时候二者有一点不一样。实现层也只列举一个Server端,二者也是大同小异,稍做改动就成。

//TestSocket.java(逻辑层)

package logic;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;

public class TestSocket {
    
 ServerSocket serverSocket = null;
 Socket socket = null;
 
 InputStream inputStream = null;
 Reader reader = null;
 BufferedReader bufferedReader = null;
 
 OutputStream outputStream = null;
 Writer writer = null;
 BufferedWriter bufferedWriter = null;
 
 
 
 public TestSocket() throws IOException{
   serverSocket = new ServerSocket(端口号);
   socket = serverSocket.accept();
   
   inputStream = socket.getInputStream();
   reader = new InputStreamReader(inputStream);
   bufferedReader = new BufferedReader(reader);
   
   outputStream = socket.getOutputStream();
   writer = new OutputStreamWriter(outputStream);
   bufferedWriter = new BufferedWriter(writer);
  
 }
 
 public void SendToClient(String message) throws IOException{
   bufferedWriter.write(message);
   bufferedWriter.newLine();
   bufferedWriter.flush(); 
 }
 
 public String GetFromClient() throws IOException{
  return bufferedReader.readLine();
 }
}


// ServerFrame.java(实现层)

package frame;

import java.awt.FlowLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Date;

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

import logic.TestSocket;

public class ServerFrame extends JFrame{

 private JTextArea  textArea = new JTextArea(11,25);
 private JTextField textField = new JTextField(19);
 private JButton button = new JButton("发送");
 private Panel panel = new Panel();
 
 private TestSocket socket = null;
 
 public ServerFrame(){
  super("聊天系统(Server)");
  this.setSize(300, 300);
  this.setLocation(150, 150);
  this.setLayout(new FlowLayout());
  this.add(textArea);
  panel.add(textField);
  panel.add(button);
  this.add(panel);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  button.addActionListener(new MyListener());
  this.setVisible(true);
  
  try {
   socket = new TestSocket();
  } catch (IOException e1) {
   textArea.append("对不起,该端口正被使用");
  }
  
  while (true) {
   try {
    String s = socket.GetFromClient();
    textArea.append(s + "\n");
   } catch (IOException e) {
    //textArea.append("数据接收错误");
    return;
   }
  }
 }

 class MyListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   try {
       String s = textField.getText();
       if (s.length() > 0) {
           socket.SendToClient(new Date().toLocaleString() + "  Server Send: \n" + s);
       }
       textArea.append(new Date().toLocaleString() + "  Server Send: \n" + s + "\n");
   }
   catch (IOException e1) {
       textArea.append("发送失败");
   }
   finally{
    textField.setText("");
   }
  }
 }
 
 
 public static void main(String[] args) {
  JFrame serverFrame = new ServerFrame();
 }

}


 
分享到:
评论

相关推荐

    java实现的类似qq聊天系统

    【Java实现的类似QQ聊天系统】是一个基于Java技术构建的在线聊天平台,它模拟了QQ的基本功能,如用户注册、登录、发送和接收消息。这个系统不仅涉及到Java编程语言的基础应用,还涵盖了网络安全领域的相关知识,特别...

    java实现多人聊天(类似于QQ聊天)

    在Java编程领域,实现一个多人聊天系统,类似于QQ聊天,主要涉及到网络编程和并发处理的知识。这个项目通常会使用Socket编程来建立客户端与服务器端的通信,并通过多线程技术来处理多个客户端的并发连接。下面我们将...

    类似于qq聊天器的java程序

    【标题】:“类似于qq聊天器的java程序” 这个标题揭示了一个项目,它的目的是创建一个Java编程语言实现的聊天应用程序,其功能和外观可能与我们熟知的QQ即时通讯软件相类似。在IT领域,这样的项目通常涉及到网络...

    java实现类似QQ聊天功能+源代码

    在Java编程语言中实现类似QQ聊天功能是一项挑战性的任务,涉及到网络通信、多线程、图形用户界面(GUI)设计等多个关键知识点。本项目显然旨在教授开发者如何利用Java技术构建一个基本的即时通讯应用。以下是关于这...

    Java模拟实现QQ聊天

    在本项目中,我们主要探讨如何使用Java编程语言模拟实现一个基本的QQ聊天功能。这个模拟聊天系统旨在提供类似于真实QQ应用的体验,包括用户登录、两人之间的私聊以及下线检测等核心功能。让我们逐步解析这个项目的...

    用java编写的类似QQ的聊天软件

    【Java实现的类似QQ聊天软件】是一个基于网络通信技术的即时通讯应用,它允许用户进行实时的文字、语音甚至视频交流。在本项目中,我们主要关注的是如何利用Java编程语言来构建这样一个系统,以及实现登录服务器和...

    简单的QQ聊天软件 用JAVA实现

    【标题】"简单的QQ聊天软件 用JAVA实现"揭示了一个基于JAVA编程语言开发的简易聊天应用程序,它旨在提供类似于QQ的通信体验。QQ是中国最受欢迎的即时通讯软件之一,具有多种功能,包括文字聊天、文件传输等。这个...

    用java实现的类似QQ的聊天软件

    《基于Java实现的类似QQ聊天软件深度解析》 在信息技术高速发展的今天,各种通信软件层出不穷,其中QQ作为一款广受欢迎的即时通讯工具,其功能强大、用户体验优秀。然而,对于IT爱好者和开发者来说,理解并实现类似...

    java版QQ聊天室

    Java版QQ聊天室是一款基于Java编程语言实现的即时通讯应用,它模仿了QQ群的功能,让用户可以在一个虚拟的聊天环境中进行实时交流。这个项目利用了Java的多线程技术,确保了在高并发情况下的稳定性和性能。接下来,...

    类似于QQ的聊天系统(java)

    类似于QQ的聊天系统 界面漂亮 有语音提示 内嵌浏览器

    Java实现的仿QQ聊天项目

    【Java实现的仿QQ聊天项目】是一个学习与实践的项目,旨在帮助开发者了解如何使用Java技术栈构建一个类似于QQ的即时通讯应用。这个项目不仅涵盖了基础的编程概念,还涉及到了网络通信、多线程、数据序列化等多个高级...

    纯Java语言编写的聊天室 跟QQ很像

    本篇文章将深入探讨一个完全使用Java语言编写的聊天室系统,该系统的设计与实现充分利用了Java的核心特性,如抽象、继承、多态和封装,同时集成了集合和映射关系的高效运用。通过这个项目,我们可以直观地理解Java的...

    qq-java.rar_QQ_java qq_java类似QQ_qq聊天系统java

    本项目"QQ_java"旨在提供一个类似于QQ的聊天系统的Java实现,帮助开发者理解即时通信系统的设计与开发。 首先,即时通信系统的核心功能包括用户注册、登录、消息发送、接收以及存储。在Java中,这些功能可以通过...

    类似于qq的聊天程序设计

    在本项目中,我们探讨的是如何使用Java编程语言设计一个类似于QQ的聊天应用程序。这个程序设计涵盖了多个关键的IT知识点,对于那些希望深入理解Java应用开发,尤其是即时通讯(IM)系统开发的学习者来说,这是一个...

    java仿QQ功能实现

    Java仿QQ功能实现是一个项目,旨在使用Java编程语言来创建一个类似于腾讯QQ的应用程序,它包含聊天、添加好友和用户注册等核心功能。这个项目主要关注于后端逻辑的实现,以及可能涉及到的数据库交互。以下是一些关键...

    QQ聊天系统 Java

    【QQ聊天系统】是基于Java技术开发的一款即时通讯软件,其核心目标是提供类似QQ的聊天体验,包括文字聊天、图片传输、截屏分享、字体选择、表情输入以及用户之间的抖动互动等多元化功能。在Java编程环境中,实现这样...

    JAVA做的仿QQ聊天

    【JAVA做的仿QQ聊天】项目是一个使用Java编程语言实现的即时通讯软件,旨在模拟QQ的聊天功能,为用户提供一个类似QQ的在线交流平台。这个项目不仅涵盖了基础的文本聊天,可能还包括了表情发送、文件传输、群聊等功能...

    QQ聊天软件原代码-java语言实现

    QQ聊天软件原代码基于Java语言实现,这是一项深入学习Java编程和网络通信技术的重要资源。Java作为一种跨平台的编程语言,以其面向对象的特性、健壮性和安全性在开发领域广泛应用,尤其是在开发桌面应用和分布式系统...

    类似QQ的Java写的聊天室

    【标题】"类似QQ的Java写的聊天室"是一款基于Java编程语言实现的即时通讯软件,其设计理念和功能特性与我们熟知的QQ相似。这个项目旨在为开发者提供一个学习和实践的平台,通过此项目,我们可以深入理解Java GUI...

Global site tag (gtag.js) - Google Analytics