Java多线程实现多客户端的通信

通过Java多线程技术,可以实现多客户端与服务器的通信。文中介绍了从简单的TCP点对点通信到使用线程处理多个客户端连接的转变,通过创建`serverThread`类继承`Thread`,改进服务器端代码,以支持同时处理多个客户端请求。改造后的代码使得服务器资源得到优化,实现了多客户端通信的目标。
摘要由CSDN通过智能技术生成
title: Java多线程实现多客户端的通信
date: 2019-05-05 12:50:00

Java多线程实现多客户端的通信

昨天学了Java中网络支持Socket应用,写了一个基于TCP通信的简陋的登录案例,代码如下:

服务器端:

package com.youdian.singinscoket;
​
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
​
/***
 * 基于TCP协议的Socket,实现用户登录
 * 服务器端
 * @author hkq
 *
 */
public class Servert {
    public static void main(String[] args) {
    try {
        //1.创建一个服务器端的Socket,即ServerSocket,指定绑定的端口,并监听此端口
        ServerSocket serverSocket=new ServerSocket(8088);
        //2.调用accept()方法开始监听.
        System.out.println("服务器端启动,等待客户端连接");
        Socket socket= serverSocket.accept();
        //3.获取字节输入流,并读取客户端信息
        InputStream is=socket.getInputStream();
        //4.将字节流装换为字符流,好处是提高读取的效率
        InputStreamReader isr=new InputStreamReader(is);
        //5.搭配使用,为字符输入流添加缓冲
        BufferedReader br=new BufferedReader(isr);
        //6.定义String类型的info,循环读取客户端信息并在控制台输出
        String info=null;
        while ((info=br.readLine())!=null) {
            System.out.println("服务器端接收到客户端数据为:"+info);  
        }
        //7.关闭socket输入流
        socket.shutdownInput();
        //8.获取输出流,响应客户端的请求
        OutputStream os =socket.getOutputStream();
        //将字节输出流转换为打印输出流
        PrintWriter pw=new PrintWriter(os);
        //服务器端向客户端发送响应信息
        pw.write("登录成功,欢迎你");
        //调用flush()方法刷新缓存
        pw.flush();
        //9.关闭资源
        pw.close();
        os.close();
        br.close();
        isr.close();
      
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值