java socket(二)

来源:互联网 发布:qq挂机软件 编辑:程序博客网 时间:2024/05/17 09:13

服务端多线程阻塞:

/***** *  * @author skiky * @describle *  */public class ClientSt {private final static Integer port = 10001;private PrintWriter out = null;private Socket socket = null;public void sendMessageToService(String message) {try {
InetAddress addr = InetAddress.getByName(null);  //为null 代表本机ipsocket = new Socket(addr, port);out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);for (;;) {Thread.sleep(1000);out.println(message);}} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} finally {try {if (null != out) {out.close();}if (null != socket) {socket.close();}} catch (IOException e1) {e1.printStackTrace();}}}public static void main(String[] args) {new ClientSt().sendMessageToService("卡卡西,你好");}}

服务端代码:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/**** *  * @author skiky * @describle socket thread server *  */public class ServerSt {public void loadServer() {ExecutorService executor = Executors.newSingleThreadExecutor();Callable<Object> task = new Callable<Object>() {public Object call() throws Exception {LoadService loadService = new LoadService();loadService.run();return "";}};Future<Object> future = executor.submit(task);try {// 无限等待除非发生Exceptionfuture.get();// 最大等待 一分钟否则会抛出超时异常// future.get(60, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}public static void main(String[] args) {new ServerSt().loadServer();}}class LoadService implements Runnable {public LoadService() {super();}@Overridepublic void run() {Integer port = 10001;ServerSocket server = null;Socket socket = null;BufferedReader in = null;try {server = new ServerSocket(port);socket = server.accept();in = new BufferedReader(new InputStreamReader(socket.getInputStream()));for (;;) {String message = in.readLine();System.out.println("客户端信息:" + message);// socket.setSoTimeout(10*1000);}} catch (IOException e) {System.out.println(e);} finally {try {if (null != in) {in.close();}if (null != server) {server.close();}if (null != socket) {socket.close();}} catch (IOException e) {e.printStackTrace();}}}}


0 0