Javaweb---网络编程(4)

TCP的客户端和服务器端

简要概括:
Javaweb---网络编程(4)_第1张图片
在这里插入图片描述
关于Accept( )
Javaweb---网络编程(4)_第2张图片
在这里插入图片描述
服务器中的连接:
Javaweb---网络编程(4)_第3张图片
Javaweb---网络编程(4)_第4张图片
结果显示:
Javaweb---网络编程(4)_第5张图片
此时引入第一个bug的来源:
Bug 1:
Javaweb---网络编程(4)_第6张图片
Javaweb---网络编程(4)_第7张图片
Javaweb---网络编程(4)_第8张图片
进一步理解缓冲区
Javaweb---网络编程(4)_第9张图片
Javaweb---网络编程(4)_第10张图片
Bug 2:
Javaweb---网络编程(4)_第11张图片
产生的原因:原因在于accept( )方法:
accept的工作原理:
Javaweb---网络编程(4)_第12张图片
解决方案: accept方法和connection同时进行
其他代码不变
Javaweb---网络编程(4)_第13张图片
主线程专门负责accept方法 其他线程负责和客户端之间的沟通
结果显示:
Javaweb---网络编程(4)_第14张图片
错误示例:
Javaweb---网络编程(4)_第15张图片
此时上面代码还存在一个问题:
每次来一个客户端创建一个线程
断开一次连接销毁一次线程
当大量的客户端被建立和大量的客户端被销毁就会导致服务器频繁的创建和销毁线程 因此使用线程池来处理这个问题.
最终版本:
Javaweb---网络编程(4)_第16张图片
此代码节省了频繁创建和销毁线程的开销
TCP特点: 有连接 可靠 面向字节流 全双工

你可能感兴趣的:(Javaweb---网络编程(4))