【图解IO与Netty系列】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(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值