Java Socket通信之聊天室功能

本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下

Client.java

import java.io.*;
import java.net.*;
import java.util.*; 

public class Client {
 public int port = 8083;
 Socket socket = null; 

 public static void main(String[] args) {
  new Client(); //开始执行
 } 

 public Client() { 

  try {
   socket = new Socket("127.0.0.1", port);
   new Cthread().start(); 

   BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   String msg1;
   while ((msg1 = br.readLine()) != null) {
    System.out.println(msg1);
   }
  } catch (Exception e) {
  }
 } 

 class Cthread extends Thread { 

  public void run() {
   try { 

    BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
    PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
    String msg2; 

    while (true) { 

     msg2 = re.readLine();
     pw.println(msg2);
    }
   } catch (Exception e) {
    e.printStackTrace();
   } 

  }
 } 

}

Server.java

import java.net.*;
import java.io.*;
import java.util.*; 

public class Server {
  int port;
  List<Socket> clients;
  ServerSocket server;
  public Server() {
    try {
      port = 8083;
      clients = new ArrayList<Socket>();
      server = new ServerSocket(port);
      System.out.println("服务器已启动");
      int co=1;
      while (true) {
        Socket socket = server.accept();
        clients.add(socket);
        Mythread mythread = new Mythread(socket,co);
        co++;
        mythread.start();
      } 

    } catch (Exception ex) {
      System.out.println("vv");
    }
  } 

  public static void main(String[] args) {
    new Server();
  } 

  class Mythread extends Thread {
    Socket ssocket;
    private int count;
    private BufferedReader br;
    private PrintWriter pw;
    public String msg; 

    public Mythread(Socket s,int c) {
      ssocket = s;
      count=c;
    } 

    public void run() { 

      try {
        br = new BufferedReader(new InputStreamReader(ssocket.getInputStream())); 

        msg = "欢迎【" +"Client "+count + "】进入聊天室!当前聊天室有【" + clients.size() + "】人"; 

        sendMsg(); 

        while ((msg = br.readLine()) != null) { 

          msg = "【" +"Client "+count + "】说:" + msg;
          sendMsg(); 

        }
      } catch (Exception ex) {
      }
    }
    public void sendMsg() {
      try {
        System.out.println(msg); 

        for (int i = clients.size() - 1; i >= 0; i--) {
          pw = new PrintWriter(clients.get(i).getOutputStream(), true);
          pw.println(msg);
          pw.flush();
        }
      } catch (Exception ex) {
      }
    }
  } 

} 

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 用java WebSocket做一个聊天室

    最近一个项目中,需要用到Java的websocket新特性,于是就学了一下,感觉这技术还挺好玩的,瞬间知道网页上面的那些在线客服是怎么做的了. 先看图: 实现了多客户机进行实时通讯. 下面看代码项目结构图:很简单,就1个类,1个页面 然后看具体代码 先看后端代码 package com.main; import java.io.IOException; import java.util.concurrent.CopyOnWriteArraySet; import javax.websocket.

  • Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    在上篇文章Java Socket聊天室编程(一)之利用socket实现聊天之消息推送中我们讲到如何使用socket让服务器和客户端之间传递消息,达到推送消息的目的,接下来我将写出如何让服务器建立客户端与客户端之间的通讯. 其实就是建立一个一对一的聊天通讯. 与上一篇实现消息推送的代码有些不同,在它上面加以修改的. 如果没有提到的方法或者类则和上一篇一模一样. 1,修改实体类(服务器端和客户端的实体类是一样的) 1,UserInfoBean 用户信息表 public class UserInfoB

  • 使用Java和WebSocket实现网页聊天室实例代码

    在没介绍正文之前,先给大家介绍下websocket的背景和原理: 背景 在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定义了WebSocket协议,能更

  • java利用Socket实现聊天室功能实例

    最近研究了下Java socket通信基础,利用代码实现了一个简单的多人聊天室功能,现把代码共享下,希望能帮到有兴趣了解的人. 目录结构: ChatClient: package com.panda.chat; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; @SuppressWarnings("serial") public class ChatClient extend

  • 基于java编写局域网多人聊天室

    由于需要制作网络计算机网络课程设计,并且不想搞网络布线或者局域网路由器配置等等这种完全搞不懂的东西,最后决定使用socket基于java编写一个局域网聊天室: 关于socket以及网络编程的相关知识详见我另一篇文章:Java基于socket编程 程序基于C/S结构,即客户端服务器模式. 服务器: 默认ip为本机ip 需要双方确定一个端口号 可设置最大连接人数 可启动与关闭 界面显示在线用户人以及姓名(本机不在此显示) 客户端: 需要手动设置服务器ip地址(局域网) 手动设置端口号 输入姓名 可连

  • Java Socket聊天室编程(一)之利用socket实现聊天之消息推送

    相关阅读:Java Socket聊天室编程(二)之利用socket实现单聊聊天室 网上已经有很多利用socket实现聊天的例子了,但是我看过很多,多多少有一些问题存在. 这里我将实现一个比较完整的聊天例子,并解释其中的逻辑. 由于socket这一块比较大,所以我将分出几篇来写一个比较完整的socket例子. 这里我们先来实现一个最简单的,服务器与客户端通讯,实现消息推送的功能. 目的:服务器与客户端建立连接,客户端可以向服务器发送消息,服务器可以向客户端推送消息. 1,使用java建立socke

  • Java基于socket实现简易聊天室实例

    本文实例讲述了Java基于socket实现简易聊天室的方法.分享给大家供大家参考.具体实现方法如下: chatroomdemo.java package com.socket.demo; import java.io.IOException; import java.net.DatagramSocket; public class ChatRoomDemo { /** * @param args * @throws IOException */ public static void main(S

  • JavaEE7+Websockets+GlassFish4打造聊天室

    在客户机和服务器之间建立单一的双向连接,这就意味着客户只需要发送一个请求到服务端,那么服务端则会进行处理,处理好后则将其返回给客户端,客户端则可以在等待这个时间继续去做其他工作,整个过程是异步的.在本系列教程中,将指导用户如何在JAVA EE 7的容器GlassFish 4中,使用JAVA EE 7中的全新的解析Json API(JSR-353),以及综合运用jQuery和Bootstrap.本文要求读者有一定的HTML 5 Websocket的基础原理知识. 效果图 我们先来看下在完成这个教程

  • 基于Tomcat7、Java、WebSocket的服务器推送聊天室实例

    前言 HTML5 WebSocket实现了服务器与浏览器的双向通讯,双向通讯使服务器消息推送开发更加简单,最常见的就是即时通讯和对信息实时性要求比较高的应用.以前的服务器消息推送大部分采用的都是"轮询"和"长连接"技术,这两中技术都会对服务器产生相当大的开销,而且实时性不是特别高.WebSocket技术对只会产生很小的开销,并且实时性特别高.下面就开始讲解如何利用WebSocket技术开发聊天室.在这个实例中,采用的是Tomcat7服务器,每个服务器对于WebSoc

  • java实现一个简单TCPSocket聊天室功能分享

    本文实例为大家分享了java实现TCPSocket聊天室功能的相关代码,供大家参考,具体内容如下 1.TCPserver.java import java.net.*; import java.io.*; import java.util.*; import java.util.concurrent.*; public class TCPserver{ private static final int SERVERPORT = 8888; private ServerSocket MyServe

随机推荐