服务端示例代码
package com.worklite.out.socket;import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;/*** @description:* @author: xz*/
@Slf4j
public class SocketServer extends Thread{Socket socket = null;public SocketServer(Socket socket) {this.socket = socket;}@Overridepublic void run() {BufferedReader bufferedReader = null;PrintWriter writer = null;try {bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//true,表示自动刷新,不需要人为触发writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);String userInput;while ((userInput = bufferedReader.readLine()) != null) {if ("exit".equals(userInput)) {log.info("短信socket服务端退出连接通信\t");break;}log.info("短信socket服务端 接收内容:\t" + userInput);String result = "0000 ";writer.println(result);}} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null){writer.close();}if (bufferedReader != null) {bufferedReader.close();}if (socket != null) {socket.close();}} catch (IOException ioException) {ioException.printStackTrace();}}}public static void main(String[] args) {try {//1.创建服务器端ServerSocket对象,指定端口ServerSocket serverSocket = new ServerSocket(64202);Socket socket = null;log.info("短信socket服务端等待客户端的连接");//2.调用accept()监听(即等待客户端的连接)while (true) {socket = serverSocket.accept();//创建一个新线程SocketServer serverThread = new SocketServer(socket);serverThread.start();}} catch (IOException e) {e.printStackTrace();}}}
客户端示例代码
package com.worklite.out.socket;import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.net.Socket;
/*** @description:* @author: xz*/
@Slf4j
public class SocketClient {public static String client(String reqXmlStr,String socketIp,int socketPort) {log.info("调用短信socket客户端,xml格式请求报文——>{}",reqXmlStr);Socket socket = null;BufferedReader bufferedReader = null;PrintWriter writer = null;String result = null;try {socket = new Socket(socketIp,socketPort);//发送数据到服务端writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);writer.println(reqXmlStr);//接收服务端返回数据流bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));while ((result = bufferedReader.readLine()) != null){log.info("短信socket客户端接收服务端响应报文:{}",result);//退出指令,关闭连接writer.println("exit");break;}}catch (IOException e) {log.info("[短信socket客户端异常]",e);e.printStackTrace();} finally {try {if (writer != null){writer.close();}if (bufferedReader != null) {bufferedReader.close();}if (socket != null) {socket.close();}} catch (IOException e) {log.info("[短信socket客户端流关闭异常]",e);e.printStackTrace();}}return result;}public static void main(String[] args) {String reqXmlStr="13912345678 ";client(reqXmlStr,"localhost",64202);}}
上一篇:<C++>二叉树进阶