服务端代码(阻塞式):
import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketAddress; /** * 服务器端阻塞式IO(Java ServerSocket) * @author Bright Lee */ public class ServerSocketTest { public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; InputStream in = null; try { serverSocket = new ServerSocket(6666); socket = serverSocket.accept(); SocketAddress clientAddress = socket.getRemoteSocketAddress(); System.out.println("有客户端连接:" + clientAddress); in = socket.getInputStream(); int value = -1; while ((value = in.read()) != -1) { char ch = (char) value; System.out.print(ch); } } catch (Exception e) { e.printStackTrace(); } finally { close(serverSocket, socket, in); } } private static void close(ServerSocket serverSocket, Socket socket, InputStream in) { try { if (in != null) { in.close(); } } catch (Exception e) { e.printStackTrace(); } try { if (socket != null) { socket.close(); } } catch (Exception e) { e.printStackTrace(); } try { if (serverSocket != null) { serverSocket.close(); } } catch (Exception e) { e.printStackTrace(); } } }客户端代码(非阻塞式):
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; /** * 客户端非阻塞式IO(Java SocketChannel) * @author Bright Lee */ public class SocketChannelTest { public static void main(String[] args) { ByteBuffer buffer = ByteBuffer.allocate(1024); SocketChannel socketChannel = null; try { socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false); socketChannel.connect(new InetSocketAddress("127.0.0.1", 6666)); if (socketChannel.finishConnect()) { String info = "I'm a client! My number is " + System.currentTimeMillis(); buffer.clear(); buffer.put(info.getBytes("UTF-8")); buffer.flip(); while (buffer.hasRemaining()) { socketChannel.write(buffer); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (socketChannel != null) { socketChannel.close(); } } catch (Exception e) { e.printStackTrace(); } } } }先运行服务端代码(ServerSocketTest.java),再运行客户端代码(SocketChannelTest.java),服务端打印信息如下:
有客户端连接:/127.0.0.1:51564
I’m a client! My number is 1547276873269
青蛙客服系统:https://download.csdn.net/download/look4liming/93326820