当前位置: 首页 > news >正文

Java:socket编程

目录

1、主程序

2、socket任务类

3、jdbc任务类

4、tomcat-jdbc连接池

5、jar包依赖


1、主程序

 创建2个线程池,一个用于管理socket连接,一个用来管理jdbc连接。

package socket;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;/*** 使用长连接2001端口(新项目20231228)* @author Administrator**/
public class M3_2 {public static void main(String[] args) {try(ServerSocket s = new ServerSocket(2001)){ExecutorService pool = Executors.newFixedThreadPool(4);ExecutorService pool2 = Executors.newFixedThreadPool(4);while(true) {Socket socket = s.accept();pool.execute(new Task(socket,pool2));ThreadPoolExecutor t = (ThreadPoolExecutor)pool;}} catch (IOException e) {e.printStackTrace();}}}

2、socket任务类

创建JDBC的任务,异步地做数据入库的动作。

package socket;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;public class Task implements Runnable {private Socket socket;private ExecutorService pool2;public Task(Socket socket, ExecutorService pool2) {super();this.socket = socket;this.pool2 = pool2;}@Overridepublic void run() {try (InputStream inputStream = this.socket.getInputStream();Scanner scanner = new Scanner(inputStream);OutputStream out = socket.getOutputStream();PrintWriter pw = new PrintWriter(out);){boolean done = false;while(!done && scanner.hasNextLine()) {String line = scanner.nextLine();if(line.trim().equals("exit")) {done = true;pw.write("End");pw.flush();continue;}// 放入线程池,进行数据入库。pool2.execute(new JdbcTask(line));pw.write("e");pw.flush();}socket.close();} catch (IOException e) {e.printStackTrace();}}}

3、jdbc任务类

package socket;import java.sql.Connection;
import java.sql.PreparedStatement;public class JdbcTask implements Runnable {private String line;public JdbcTask(String line) {super();this.line = line;}@Overridepublic void run() {try (Connection connection = JdbcPool.getConnection();){// TODO line 入库// 业务逻辑SSSString sql2 = "insert into plc_first(ser_no,gong_xu_hao,niu_ju,jiao_du,ok_ng,gong_ju_hao,da_yin_ma,create_time)"+ "values (?,?,?,?,?,?,?,now())";PreparedStatement statement2 = connection.prepareStatement(sql2);String[] split = line.split("\\|");statement2.setString(1, split[0]);statement2.setString(2, split[3]);statement2.setString(3, split[4]);statement2.setString(4, split[5]);statement2.setString(5, split[6]);statement2.setString(6, split[7]);statement2.setString(7, split[8]);statement2.execute();statement2.close();// 业务逻辑EEEconnection.close();} catch (Exception e) {e.printStackTrace();}}}

4、tomcat-jdbc连接池

package socket;import java.sql.Connection;
import java.sql.SQLException;import org.apache.tomcat.jdbc.pool.DataSource;
/*** jdbc工具类* @author Administrator**/
public class JdbcPool {private static volatile DataSource dataSource;/*** 懒汉式(双重检查)* @return* @throws SQLException*/public static Connection getConnection() throws SQLException {if(dataSource == null) {synchronized (DataSource.class) {if(dataSource == null) {dataSource = new DataSource();dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/plc?characterEncoding=UTF8");dataSource.setUsername("root");dataSource.setPassword("111111");dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");}}}return dataSource.getConnection();}}

5、jar包依赖

相关文章:

Java:socket编程

目录 1、主程序 2、socket任务类 3、jdbc任务类 4、tomcat-jdbc连接池 5、jar包依赖 1、主程序 创建2个线程池,一个用于管理socket连接,一个用来管理jdbc连接。 package socket;import java.io.IOException; import java.net.ServerSocket; import…...

哨兵1号回波数据(L0级)FDBAQ压缩算法详解

本专栏目录: 全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 1. 全球SAR卫星回波数据压缩算法统计 各国的SAR卫星的压缩算法按照时间轴排列如下: 可以看出传统的分块BAQ压缩算法(上图粉色)仍然是主流,哨兵1号其实也有传统的BAQ压缩模式。 本文介绍哨兵1号用的FDBAQ算…...

盾构机数据可视化监控平台 | 图扑数字孪生

2002 年,中国 863 计划把盾构机列为国家关键技术,以国家力量为主导,集中力量进行盾构机专项研究。在 2008 年,中国成功研制出属于自己的国产盾构机——中国中铁一号,同时还打通了天津地铁 1500m 的隧道。此举更彻底地打破了国内盾…...

计算机网络课程设计-企业网三层架构

(单人版) 摘 要 本篇报告主要解决了为一家名为西宫的公司网络搭建问题,该网络采用企业网三层架构对完了过进行设计。首先使用以太网中继,主要使用VLAN划分的技术来划定不同部门。使用MSTP对每个组配置生成树,防止交换机…...

Docker上传镜像到Harbor

上传镜像到Harbor 给镜像打上标签 语法 docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/] docker tag eureka:v1 127.0.0.1:85/tensquare/eureka:v1推送镜像 docker push 127.0.0.12:85/tensquare/eureka:v1如果出现以下错误,是因为Docker没有把Har…...

mfc100u.dll文件丢失了要怎么解决?修复mfc100u.dll详细指南

mfc100u.dll文件丢失了要怎么解决?首先让我们扒一扒什么是 mfc100u.dll。这玩意儿是 Microsoft Visual Studio 2010 的一部分,它就像一款程序生活中不可或缺的零件,没了它,程序肯定跑不起来。想想看,没有一个重要的零件&#xff…...

【ArcGIS微课1000例】0084:甘肃积石山地震震中100km范围内历史灾害点分布图(2005-2020)

甘肃积石山地震震中100km范围内历史灾害点分布图(2005-2020)。 文章目录 一、成果预览二、实验数据三、符号化四、地图整饰一、成果预览 本实验最终效果图如下所示: 二、实验数据 以下数据可以从本专栏配套的实验数据包中0084.rar中获取。 1. 历史灾害数据。为2005-2020时…...

java SSM拖拉机售后管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM拖拉机售后管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源 代码和数据库,系统主要…...

侯捷C++ 2.0 新特性

关键字 nullptr and std::nullptr_t auto 一致性初始化:Uniform Initialization 11之前,初始化方法包括:小括号、大括号、赋值号,这让人困惑。基于这个原因,给他来个统一,即,任何初始化都能够…...

计算机网络——基础知识汇总(八)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…...

DIA数皆智能客户体验管理CEM获伊利“健康+AI”生态创新大奖

DIA数皆智能客户体验管理CEM获伊利“健康AI”生态创新大奖 数皆智能再获殊荣! 北京,2023年12月26日 — 在全球瞩目的伊利集团“健康AI”生态创新大赛中,上海数皆智能技术有限公司大放异彩,其创新领先的“智能化客户体验管理CEM&a…...

linux 休眠唤醒中设备、总线、用户进程、内核线程调试分析流程

一、suspending consoles打印 代码位置:Kernel/power/suspend.c 函数调用流程:devices_and_enter(suspend_state_t state) --> suspend_console(); void suspend_console(void) { if (!console_suspend_enabled) 注释这一行,可以看到…...

k8s陈述式资源管理(命令行)

1、资源管理 (1)陈述式资源管理(常用——查、增) 使用kubectl工具进行命令行管理 ①特点:对资源的增删查比较方便,对改不友好 ②优点:90%以上的场景都可以满足 ③缺点:命令冗长…...

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…...

三菱MR-JE伺服脉冲轴应用参数设置

三菱MR-JE伺服在脉冲轴控制上的应用&#xff0c;常用参数设置如下&#xff1a; 1、常用参数 未完......

通信原理课设(gec6818) 006:网络编程

目录 1、概念 2、通信 3、通信基本流程 TCP: UDP: 4、函数 I 创建套接字 II 绑定地址 III 字节序转换 IV 地址转换 V 监听 VI accept VII connect VIII 从套接字接收信息 IX 从套接字发送消息 X 关闭套接字 5、网络配置 1、确保你的网卡里面有两个虚拟网卡&a…...

一体化、一站式!智能视频客服加码全媒体云呼叫中心能力

凭借对电话、短信、邮件、社交媒体、视频等数种沟通渠道强大的统一集成能力&#xff0c;全媒体云呼叫中心已跃升成为现代企业客户服务的核心工具&#xff0c;高效便捷地为企业提供客户服务。而随着消费者需求愈加多元化和个性化&#xff0c;传统的语音通话方式已无法满足部分消…...

Vue的watch功能:实现响应式数据更新

watch是vue内部提供的一个用于侦听功能的更通用的方法&#xff0c;其用来响应数据的变化&#xff0c;通过特定的数据变化驱动一些操作。简言之&#xff1a;当需要被watch监听的数据发生变化时就会被执行watch中的逻辑。实现数据的实时更新&#xff01; 普通监听 <template…...

兔单抗制备方法的发展-杂交瘤技术|卡梅德生物

兔单克隆抗体技术是近年来在抗体研究领域中取得的重要进展之一。研究人员通过改进抗原设计、免疫策略和单克隆B细胞培养条件&#xff0c;提高了单克隆抗体的产量和特异性。相比于传统的小鼠单克隆抗体技术&#xff0c;兔单克隆抗体技术具有更大的抗原特异性和更高的亲和力&…...

【数据结构】图论与并查集

一、并查集 1.原理 简单的讲并查集&#xff0c;就是查询两个个元素&#xff0c;是否在一个集合当中&#xff0c;这里的集合用树的形式进行表示。并查集的本质就是森林, 即多棵树。 我们再来简单的举个例子: 假设此时的你是大一新生&#xff0c;刚进入大学&#xff0c;肯定是…...

Kazam vs OBS:Ubuntu 24.04 屏幕录制工具对比与选择指南

Kazam vs OBS&#xff1a;Ubuntu 24.04 屏幕录制工具深度评测与实战选择 在数字内容创作爆发的时代&#xff0c;屏幕录制已成为游戏实况、在线教学、产品演示的标配技能。对于Ubuntu 24.04用户而言&#xff0c;Kazam和OBS Studio这两款开源工具常被拿来比较——前者以轻量简洁著…...

3508RAID卡RAID与JBOD模式对比:如何选择最适合你的存储方案?

3508RAID卡RAID与JBOD模式深度解析&#xff1a;从原理到实战的存储方案选择指南 当企业面临数据存储方案的选择时&#xff0c;3508RAID卡提供的RAID和JBOD模式常常让人陷入纠结。这两种模式看似简单&#xff0c;实则背后隐藏着截然不同的设计哲学和应用场景。本文将带您深入理解…...

LeetCodehot100-2 两数相加

class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {if (l1 nullptr) return l2;if (l2 nullptr) return l1;ListNode* head l1; // 保存头节点ListNode* prev nullptr; // 记录上一个节点&#xff0c;用于连接int carry 0;// 同时遍历…...

WWW-万维网

万维网的概念与组成结构万维网&#xff08;World Wide Web&#xff0c;WWW&#xff09;是一个分布式的信息存储空间&#xff0c;在这个空间中&#xff1a;一个事物被称为一样 “资源”&#xff0c;并由一个全域 “统一资源定位符”&#xff08;URL&#xff09;标识。这些资源通…...

企业Exchange邮箱配置失败?可能是Autodiscover服务出了问题,教你用微软官方工具排查

企业Exchange邮箱自动配置故障深度排查指南 引言 当企业用户或IT管理员遇到Outlook无法自动配置Exchange邮箱的问题时&#xff0c;往往意味着Autodiscover服务出现了异常。作为Exchange生态系统的核心组件&#xff0c;Autodiscover服务负责在客户端与服务器之间建立初始连接通…...

嵌入式哈希表实现:无malloc线性探测Hash Map

1. 项目概述 hashmap.c 是一个面向嵌入式系统深度优化的纯 C 语言哈希映射&#xff08;Hash Map&#xff09;实现&#xff0c;不依赖标准库&#xff08;如 stdlib.h 、 string.h &#xff09;&#xff0c;完全可移植于裸机环境、RTOS&#xff08;FreeRTOS、Zephyr、RT-Thr…...

保姆级避坑指南:Ubuntu系统下Hadoop HA集群搭建,我踩过的那些SSH和配置文件的“坑”

Ubuntu下Hadoop HA集群搭建&#xff1a;那些教科书不会告诉你的实战陷阱 第一次在Ubuntu上搭建Hadoop HA集群时&#xff0c;我天真地以为照着官方文档就能顺利跑起来。直到SSH连接莫名其妙失败、JournalNode权限报错刷屏、ZKFC死活不启动时&#xff0c;才明白为什么有人说大数据…...

ES920 Arduino库深度解析:Sub-1GHz工业无线通信实战指南

1. ES920无线模块Arduino库深度解析&#xff1a;面向工业级Sub-1GHz通信的工程实践指南ES920系列是日本Echostar公司推出的高性能Sub-1GHz无线通信模块&#xff0c;涵盖FSK调制的ES920与LoRa调制的ES920LR两个子型号。该系列模块专为日本920MHz ISM频段&#xff08;920.6–928.…...

基于Python的本科生交流培养管理平台毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于Python的本科生交流培养管理平台&#xff0c;以提升我国高等教育中本科生交流培养的质量与效率。具体研究目的如下&#xff1a…...

day23 模拟2

...