package com.test.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; public class SocketServer { public static void main(String[] args){ System.out.println("Server statring..."); SocketServer server = new SocketServer(); server.init(); } public void init(){ try{ ServerSocket serverSocket = new ServerSocket(12345); while(true){ System.out.println("socketClient..."); Socket socketClient = serverSocket.accept(); new HandlerThread(socketClient); } }catch(Exception e){ e.printStackTrace(); } } private class HandlerThread implements Runnable{ private Socket socket; public HandlerThread(Socket client){ socket = client; System.out.println("HandlerThread:" + client.toString()); new Thread(this).start(); } @Override public void run(){ try{ System.out.println("HandlerThread.run:"); DataInputStream input = new DataInputStream(socket.getInputStream()); byte clientInputBtye = input.readByte(); // String clientInputStr = input.readUTF(); // System.out.println("clientInputStr:" + clientInputStr); System.out.println("clientInputBtye:" + clientInputBtye); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); byte[] b = {00, 00, 00, 00, 00, 06, 01, 03, 00, 10, 00, 73, 00}; // Clinet receiveStr:00 00 00 00 00 06 01 03 00 00 00 02 00 out.write(b, 0, b.length); out.close(); input.close(); }catch(Exception e){ e.printStackTrace(); }finally{ if(socket != null){ try{ socket.close(); }catch(Exception e){ socket = null; e.printStackTrace(); } } } } } }
Client端
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.util.Properties; public class SocketServer { public static void main(String[] args){ // Get properties. Properties configProperties = new Properties(); String propertiesURI = "/sysconfig.properties"; String[] addr = propertiesURI .split(":"); String receiveStr = ""; // String sendStr = "00 00 00 00 00 06 01 03 00 00 00 02"; byte[] sendByteArr = {00,00,00,00,00,06,01,03,00,00,00,02}; // Default create a stream socket; otherwise, create a datagram socket. Socket socket = null; try{ socket = new Socket(addr[0], Integer.parseInt(addr[1])); socket.setSoTimeout(20 * 1000); //Send str to server. DataInputStream dataInputStream = new DataInputStream(socket.getInputStream()); DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); dataOutputStream.write(sendByteArr, 0, sendByteArr.length); // Receive str. byte[] receiveBytes = new byte[13]; int receiveInt = dataInputStream.read(receiveBytes, 0, receiveBytes.length); receiveStr = bytesToHexStr(receiveBytes); dataOutputStream.close(); dataInputStream.close(); }catch (Exception e){ e.printStackTrace(); }finally { if (socket != null) { try { socket.close(); } catch (Exception e) { socket = null; e.printStackTrace(); } } } return receiveStr; } }