Java网络编程Demo,使用TCP 实现简单群聊功能GroupchatSimple,多个客户端输入消息,显示在服务端的控制台

简介: Java网络编程Demo,使用TCP 实现简单群聊功能GroupchatSimple,多个客户端输入消息,显示在服务端的控制台

效果:


服务端


52.png


客户端


53.png544.png


实现代码:


服务端


import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
  public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(8888);
    System.out.println("群聊聊天室开启...");
    //定义初始上线人数为0
    int i=0;
    while (true) {
      Socket socket = server.accept();
      i++;
      System.out.println("上线通知:"+socket.getInetAddress()+":"+socket.getPort());
      //读(使用多线程实现读的功能)
      new Thread(new ServerThread(socket)).start();
      System.out.println("目前上线人数"+i+"人");
    }
  }
}


线程类


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class ServerThread implements Runnable{
  public Socket socket;
  public ServerThread(Socket socket) {
    super();
    this.socket = socket;
  }
  @Override
  public void run() {
    // TODO Auto-generated method stub
    try {
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while (true) {
        String readLine = bufferedReader.readLine();
        System.out.println(readLine);
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}


客户端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
  public static void main(String[] args) throws UnknownHostException, IOException {
    Socket socket = new Socket("127.0.0.1",8888);
    System.out.println("您好吕布,您已经上线了");
    //构建从控制台输入的输入流
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    //构建从客户端输出的输出流
    PrintWriter pw=new PrintWriter(socket.getOutputStream());
    while (true) {
      pw.println("吕布说:"+br.readLine());
      pw.flush();
    }
  }
}
相关文章
|
3天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
8天前
|
Java
【Java开发指南 | 第二十篇】Java流之控制台
【Java开发指南 | 第二十篇】Java流之控制台
12 2
|
1天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
|
1天前
|
存储 网络协议 安全
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(上)
|
2天前
|
Java Apache 网络架构
Java用于远程调用的客户端都有什么
【5月更文挑战第18天】Java用于远程调用的客户端都有什么
16 5
|
2天前
|
网络协议 Python
在python中利用TCP协议编写简单网络通信程序,要求服务器端和客户端进行信息互传。 - 蓝易云
在这个示例中,服务器端创建一个socket并监听本地的12345端口。当客户端连接后,服务器发送一条欢迎消息,然后关闭连接。客户端创建一个socket,连接到服务器,接收消息,然后关闭连接。
55 0
|
6天前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
|
6天前
|
XML 监控 Dubbo
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
|
7天前
|
网络协议 网络性能优化
UDP与TCP:了解这两种网络协议的不同之处
UDP与TCP:了解这两种网络协议的不同之处
|
7天前
|
网络协议
TCP三次握手:实现网络通信的神秘仪式
TCP三次握手:实现网络通信的神秘仪式