当前位置: 首页 > 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包依赖

http://www.lryc.cn/news/271636.html

相关文章:

  • 哨兵1号回波数据(L0级)FDBAQ压缩算法详解
  • 盾构机数据可视化监控平台 | 图扑数字孪生
  • 计算机网络课程设计-企业网三层架构
  • Docker上传镜像到Harbor
  • mfc100u.dll文件丢失了要怎么解决?修复mfc100u.dll详细指南
  • 【ArcGIS微课1000例】0084:甘肃积石山地震震中100km范围内历史灾害点分布图(2005-2020)
  • java SSM拖拉机售后管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 侯捷C++ 2.0 新特性
  • 计算机网络——基础知识汇总(八)
  • DIA数皆智能客户体验管理CEM获伊利“健康+AI”生态创新大奖
  • linux 休眠唤醒中设备、总线、用户进程、内核线程调试分析流程
  • k8s陈述式资源管理(命令行)
  • 五、HTML 标题
  • 三菱MR-JE伺服脉冲轴应用参数设置
  • 通信原理课设(gec6818) 006:网络编程
  • 一体化、一站式!智能视频客服加码全媒体云呼叫中心能力
  • Vue的watch功能:实现响应式数据更新
  • 兔单抗制备方法的发展-杂交瘤技术|卡梅德生物
  • 【数据结构】图论与并查集
  • 冲刺港股IPO,速腾聚创「承压」
  • Linux基础知识点(五-信号)
  • SpringBoot 一个注解实现数据脱敏
  • 记录:开始学习网络安全
  • C语言—第1次作业:编译与连接基础知识
  • not attached to window manager问题解决
  • 影视后期: PR调色处理,调色工具面板介绍
  • ARM AArch64的虚拟化(virtualization)详解(上)
  • 计算机组成原理知识总结
  • springboot学习(八十五) 解决springboot3.2找不到资源无法抛出404错误的问题
  • OpenHarmony 应用通用签名