Java世界里的NIO
Java的传统Socket编程
传统的Socket编程模型属于BIO模型,是一种同步阻塞式IO模型,最大的特点就是当ServerSocket调用accept方法如果没有客户端连接时会阻塞,当Socket调用read方法读取数据时如果客户端没有发送数据会阻塞。
Socket编程案例
public class SocketServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9000);
while (true) {
System.out.println("等待连接。。");
//阻塞方法
Socket clientSocket = serverSocket.accept();
System.out.println("有客户端连接了。。");
handle(clientSocket);
}
}
private static void handle(Socket clientSocket) throws IOException {
byte[] bytes = new byte[1024];
System.out.println("准备read。。");
//接收客户端的数据,阻塞方法,没有数据可读时就阻塞
int read = clientSocket.getInputStream().read(bytes);
System.out.println("read完毕。。");
if (read != ‐1) {
System.out.println("接收到客户端的数据:" + new String(bytes, 0, read));
}
clientSocket.getOutputStream().write("HelloClient".getBytes());
clientSocket.getOutputStream().flush();
}
}
//客户端代码
public class SocketClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 9000);
//向服务端发送数据
socket.getOutputStream().write(

最低0.47元/天 解锁文章
1667

被折叠的 条评论
为什么被折叠?



