服务端返回响应 任务分配给线程

news2025/1/15 3:16:01

package TCP6;

// 完成TCP通信服务端  多发多收


import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class Server {
    public static void main(String[] args) throws Exception {

        System.out.println("===============服务端启动成功================");

        //1:创建serverSocket的对象 同时为服务端注册端口
     ServerSocket serverSocket = new ServerSocket(8888);

     // 创建线程池 负责处理通信管道的任务
    ThreadPoolExecutor pool= new ThreadPoolExecutor(4*2,4*2, 0, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(8), Executors.defaultThreadFactory());


        while (true) {
            //2:使用serverSocket 对象 调用accept 方法 等待客户端连接请求
            Socket socket= serverSocket.accept();


            // 3:把客户端对应的Socket 通信管道 交给独立的线程负责
          pool.execute(new ServerReaderRunnable(socket));




        }

    }

}
package TCP6;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Random;

public class ServerReaderRunnable implements Runnable {


    private  Socket socket;
public ServerReaderRunnable(Socket socket) {
    this.socket=socket;
}
    @Override
    public void run() {
       // 立即响应一个网页内容: ”你好你还好吗“给浏览器展示

        try {
            OutputStream os=socket.getOutputStream();
            PrintStream ps=new PrintStream(os);
            ps.println("HTTP/1.1 200 OK");
            ps.println("Content-Type:text/html;charset=UTF-8");
            ps.println();  //必须换行

            ps.println("<div  style='color:red;font-size:120px;text-align:center'>你好你还好吗 6666</div> ");



            socket.close();
            ps.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

I/O模型之非阻塞IO

简介 五种IO模型   阻塞IO   非阻塞IO   信号驱动IO   IO多路转接    异步IO 代码书写 非阻塞IO 再次理解IO 什么是IO&#xff1f;什么是高效的IO&#xff1f; 为了理解后面的一个问题&#xff0c;我们首先要再重新理解一下什么是IO 在之前的网络介绍中&#xff…

北漂七八年,有得亦有失,只有回到家才能找到归属感与幸福!

1. 写在前面 今天这个日子&#xff0c;想必大家再熟悉不过了。在这里祝每一位程序员节日快乐&#xff0c;同时也祝愿各位今后的编码事业一帆风顺&#xff01;转眼自己踏入这个行业再有个两三年就要十年磨一剑了。所见所闻以及所悟虽不能与行业内老前辈们相比&#xff0c;但所过…

C++入门指南:带你快速了解模板(建于收藏!!)

C入门指南&#xff1a;带你快速了解模板&#xff08;建于收藏&#xff01;&#xff01;&#xff09; 一、泛型编程&#xff08;模板引入&#xff09;二、函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.4.1 隐式实例化2.4.2 显示实例化 2.5…

基于springboot实现CSGO赛事管理系统【项目源码+论文说明】

基于SpringBoot实现CSGO赛事管理系统演示 摘要 CSGO赛事管理系统是针对CSGO赛事管理方面必不可少的一个部分。在CSGO赛事管理的整个过程中&#xff0c;CSGO赛事管理系统担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类的管理系统也在不断改进。本课题所设计…

npm 安装到指定文件夹

创建一个文件夹&#xff0c;用vscode或者cmd打开&#xff0c; 执行 npm install --prefix ./ 路径 包名&#xff0c; npm install --prefix ./ 包名 &#xff0c; 就会将包安装在当前文件夹&#xff0c; 例如&#xff1a; npm install --prefix ./ -g oppo-minigame…

AutoCAD 2024 Mac中文附激活补丁 兼容M1.M2电脑

AutoCAD 2024是一款功能强大的CAD设计绘图工具&#xff0c;旨在帮助用户创建和编辑高质量的设计图纸和模型。该软件支持2D和3D设计&#xff0c;具有丰富的功能和工具&#xff0c;可用于绘图、建模、注释、标注、尺寸设置等多种操作。AutoCAD 2024还引入了智能对象捕捉、实时预览…

脉宽调制(PWM)开关驱动

脉宽调制&#xff08;PWM&#xff09;开关驱动 对于某些依赖于输入的有效驱动电压来控制执行效果的执行器&#xff0c;广泛地使用PWM开关驱动。PWM&#xff08;Pulse Width Modulation&#xff09;是脉宽调制的英文缩写。它使用一个固定幅值且频率保持一定的脉冲输出&#xff…

# Eolink 1024 程序员节特别活动,邀您参与!

Eolink 已和 Linker 们一起走过了 7 年&#xff0c;又到 1024 程序员节&#xff0c; Eolink 为大家特别准备了节日福利&#xff01; &#x1f389; 福利活动一&#xff1a; 关注「Eolink」公众号&#xff0c;后台回复「1024」即可参与抽奖&#xff01; &#x1f389; 福利活动…

IDC发布生成式AI采用旅程报告:容联云助力银行引入生成式AI

近日&#xff0c;国际数据公司IDC发布了《从典型落地案例看生成式AI采用旅程&#xff0c;3Q23》报告&#xff0c;通过几个典型案例介绍用户采用生成式AI的考量、应用场景、落地路线、决策流程&#xff0c;为最终用户提供参考建议。 容联云基于自研赤兔大模型助力《XX银行服务营…

基于springboot实现CSGO赛事管理系统【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现CSGO赛事管理系统演示 摘要 CSGO赛事管理系统是针对CSGO赛事管理方面必不可少的一个部分。在CSGO赛事管理的整个过程中&#xff0c;CSGO赛事管理系统担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类的管理系统也在不断改进。本课题所设计…

(九)QVTKOpenGLNativeWidget同时显示点云和模型

一、加载点云 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //创建点云指针QString fileName QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");if(f…

Oracle 中 group by 的使用需要注意的地方

1.业务场景 需要将2023年1-12月的数据全部查出&#xff0c;并以行的形式呈现。这里要用到行转列的思路&#xff0c;我采用的是简单的case when函数。 2.group by 的使用方法 WHERE xxx1xx AND xxx2yy group by (除聚合函数以外的所有字段)举个例子&#xff1a; select stud…

alpha shape 2D点集边缘线提取

Delaunay三角网 alpha shape 2D点集边缘线提取 Delaunay三角网 参考blog: Scipy 笔记 [Geometry] Alpha Shapes - 原理及我的实现Alpha Shape Widyaningrum E , Peters R Y , Lindenbergh R C . Building outline extraction from als point clouds using medial axis transfo…

MATLAB——一维离散小波的单层分解

%% 学习目标&#xff1a;一维离散小波的单层分解 %% clear all; close all; load noissin.mat; [cA,cD]dwt(noissin,sym4); %% cA是近似系数&#xff08;低频部分&#xff09;&#xff0c;cD是细节系数&#xff08;高频部分&#xff09;&#xff0c;采用的小波是sym4 f…

2023.10.22 关于 定时器(Timer) 详解

目录 引言 标准库定时器使用 自己实现定时器的代码 模拟实现的两大方面 核心思路 重点理解 自己实现的定时器代码最终代码版本 引言 定时器用于在 预定的时间间隔之后 执行特定的任务或操作 实例理解&#xff1a; 在服务器开发中&#xff0c;客户端向服务器发送请求&#…

Banana Pi BPI-W3(Armsom W3)RK3588开当板之调试UART

前言 本文主要讲解如何关于RK3588开发板UART的使用和调试方法&#xff0c;包括UART作为普通串口和控制台两种不同使用场景 一. 功能特点 Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串口标准&#xff0c;完整模块支持以下功能&#xff1a; 支…

【T+】畅捷通T+增加会计科目提示执行超时已过期。

【问题描述】 在畅捷通T软件中&#xff0c; 增加会计科目的时候提示&#xff1a; 通过DataTable插入ext扩展表出错:执行超时已过期。 完成操作之前已超时或服务器未响应。 操作已被用户取消。 语句已终止。 【解决方法】 【方法一】 注销用户登录&#xff0c;回到软件登录界面…

linux入门---多线程的理解

目录标题 线程的认识线程的管理进程和线程的区别为什么要有多线程线程的特性多线程的创建和证明线程特性的补充线程的优点线程的缺点线程的健壮性问题clone函数 线程的认识 在之前的学习中我们知道当一个程序加载进物理内存的时候操作系统会为该程序创建对应的PCB&#xff0c;…

11 Fork/Join

1 分治思想 分治思想&#xff1a;规模为N的问题分解为K个规模的子问题&#xff0c;子问题相互独立且与原问题性质相同&#xff0c;求出子问题的解&#xff0c;就能得到原问题的解 分治思想的步骤&#xff1a; 分解 求解 合并 2 Fork/Join 2.1 介绍 并行计算框架&#xff0c;用…