package com.engine.util; import weaver.general.BaseBean; import weaver.general.StringUtil; import java.io.*; import java.net.Socket; import java.nio.charset.StandardCharsets; //发送SocketUtil public class SocketClientUtil { private int port = 8090; private String host = "14.1.209.146"; // private BaseBean bs = new BaseBean(); public SocketClientUtil(String host ,int port) { this.port = port; this.host = host; } public String send(String request) throws Exception { // bs.writeLog("Client Start..."); Socket socket = null; try { //创建一个流套接字并将其连接到指定主机上的指定端口号 // System.out.println(request); socket = new Socket(host,port); // String str = "000006121010157060000081243025801570102311000120230905104426true500130004130157202309050600000812430todogetCountuserNum10913026任广鹏是个大刷币"; // System.out.println(request); //读取服务器端数据 BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); //向服务器端发送数据 // PrintStream out = new PrintStream(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8)); PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8),true); out.println(request); char[] datalen=new char[8];//报文前八位为报文体总长度 input.read(datalen,0,8); String lendata=new String (datalen); System.out.println(lendata); int length=Integer.parseInt(lendata); // new BaseBean().writeLog("报文长度"+length); char[] data=new char[length]; int datalength = input.read(data,0,length); String requestData = new String(data); // new BaseBean().writeLog("requestData",requestData); // String ret = input.readLine(); System.out.println("服务器端返回过来的是: " + requestData); // bs.writeLog("服务器端返回过来的是: " + requestData); // 如接收到 "OK" 则断开连接 if (!StringUtil.isEmpty(requestData)) { // bs.writeLog("客户端将关闭连接"); // System.out.println("客户端将关闭连接: " + requestData); Thread.sleep(500); } out.close(); input.close(); return requestData; } catch (Exception e) { System.out.println("客户端异常:" + e.getMessage()); throw e; } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { socket = null; // bs.writeLog("客户端 finally 异常:" + e.getMessage()); } } } // return "-1"; } //测试 public static void main(String[] args) throws Exception { for (int i = 0; i < 2000; i++) { new Thread(){ @Override public void run(){ SocketClientUtil socket = new SocketClientUtil("14.1.209.146", 8090); try { socket.send("000005971010157060000065445025801570102311000120240315092648true500130004120157202403150600000654450todogetCount2userNum10110047"); } catch (Exception e) { e.printStackTrace(); } } }.start(); } } }