1.启动类
@SpringBootApplication
public class serverApplication {
public static void main(String[] args) {
SpringApplication.run(serverApplication.class, args);
DemoServer demoServer = new DemoServer();
try {
demoServer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.socket服务实现处理器都在这里
@Component
public class DemoServer {
private static final Logger logger = LoggerFactory.getLogger(DemoServer.class);
public void start() throws IOException {
//线程池,有待商榷
ExecutorService newCacheThreadPool = newCachedThreadPool();
ServerSocket server = new ServerSocket(30038);
logger.info("服务启动...");
while (true) {
final Socket socket = server.accept();
logger.info("开始处理请求");
newCacheThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
handler(socket);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
private static void handler(Socket socket) throws Exception {
byte[] bytes = new byte[1024];
try {
InputStream inputStream = socket.getInputStream();
StringBuilder sb = new StringBuilder();
while (true) {
//读取数据(阻塞)
int read = inputStream.read(bytes);
if (read != -1) {
sb.append(new String(bytes, Charset.forName("gbk")));
//处理响应
String respMsg = new String("return");
byte[] respdata = respMsg.getBytes();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(respdata);
} else {
break;
}
}
logger.info("请求:{}" , sb);
} catch (IOException e) {
e.printStackTrace();
} finally {
logger.info("socket关闭");
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}