代码小白。对socket通信这块不了解,现在手上正好有个急事关于这个。主要内容就是第三方通过socket通信调用我的机器发送xml报文,自己测试的时候写了个main函数serversocket,但是实际上最后要部署到生产,main函数肯定不行,看网上说什么监听器、守护进程之类的根本不懂…还请大神们指导指导,最好简单源码支持下,万分感谢!
3条回答 默认 最新
- Winson.J 2021-10-15 17:18关注
socket服务类
package com.socket.server; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MytSocketServer { //服务监听端口号 private int serverPort = 10002; //socket服务类 private ServerSocket socketServer; //socket服务监听线程 private ServerThread serverThread; public void initSocketServer() { } public void startServer() { try { //启动服务 socketServer = new ServerSocket(serverPort); } catch (IOException e) { System.out.println("初始化SSLServer失败[IO异常]: " + e.getMessage()); System.exit(0); } serverThread = new ServerThread(); Thread workThread = new Thread(serverThread); workThread.start(); } class ServerThread implements Runnable { @Override public void run() { while (true) { Socket socket = null; try { //监控端口,没有连接时阻塞, socket = socketServer.accept(); //有连接,交给线程BusinessThread处理,让服务可以继续监控端口 new Thread(new BusinessThread(socket)).start(); } catch (IOException e) { System.out.println("处理remote socket失败: " + e.getMessage()); } try { //这里可以按需要设置时间间隔,业务多间隔就短点,反之就长点 Thread.sleep(50); } catch (InterruptedException e) { } } } } }
业务处理线程类
package com.socket.server; import java.net.Socket; public class BusinessThread implements Runnable { private Socket socket; public BusinessThread(Socket socket) { this.socket = socket; } @Override public void run() { //从socket中读取完整消息 String xml = readXml(); //一下进行其他处理 } private String readXml() { // TODO Auto-generated method stub return null; } }
测试类
package com.socket.server; public class Test { public static void main(String[] args) { MytSocketServer sever = new MytSocketServer(); sever.initSocketServer(); } }
部署到生产,先安装jdk
- 打成jar包 xxxxxx.jar
- 上传到生产服务器
- 配置相关的配置文件
- java -jar xxxxxx.jar 启动程序
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报