java tcp socket 阻塞_【Java】同步阻塞式(BIO)TCP通信

TCP BIO

背景

网络编程的基本模型是Clien/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过socket进行通信。socket相当于通信的媒介,用来传输数据。

Java处理TCP的类主要有Socket和ServerSocket,基于传统同步阻塞模型(Blocking IO)开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功之后,双方通过输入和输出流进行同步阻塞式通信。

模型

下图是一个BIO的服务端通信模型:采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,它接受到客户端连接请求后为每一个客户端创建一个新的线程进行链路处理,处理完之后通过流应答给客户端,线程销毁。

f094ed4a71e49a6a9f2c6d1ebb6c2711.png

这种模型的缺点十分明显,当客户端大量请求到达时,由于线程笨重、占用资源大等特点,服务端无法承受巨大的开销,易导致服务宕机。

代码

首先是客户端代码,在代码中可以看到,客户端向127.0.0.1:20006的地址发送连接请求,当连接建立时,通过IO流输出字符串到socket中&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值