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();
    }
  }
}
相关文章
|
1月前
|
运维 监控 JavaScript
JAVA村卫生室、诊所云HIS系统源码 支持医保功能
运维运营分系统 1、系统运维:环境管理、应用管理、菜单管理、接口管理、任务管理、配置管理 2、综合监管:统计监管的医疗机构的综合信息,包括医疗业务量、人员配备量、支付分类占比等。 3、系统运营:机构管理、药品目录管理、用户管理、角色管理、字典管理、模板管理、消息管理、运营配置、售后服务、外部系统。
30 0
|
1月前
|
Java
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
36 0
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
【计算机网络】如何让客户端构造一个HTTP请求-2
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十四题:综合案例:编程模拟智能手机和普通手机功能。
【Java每日一题】——第四十四题:综合案例:编程模拟智能手机和普通手机功能。
58 0
|
1天前
|
Java API
java流式实现chatGPT会话功能
java流式实现chatGPT会话功能
7 1
|
1月前
|
存储 Java API
Java统计功能
Java统计功能
14 0
|
1月前
|
存储 搜索推荐 Java
Java筛选功能的秘密
Java筛选功能的秘密
12 0
|
1月前
|
存储 算法 安全
Java代码能实现这些隐藏的加密功能
Java代码能实现这些隐藏的加密功能
58 0

热门文章

最新文章