目录
什么是TCP协议
TCP是一种面向连接,安全、可靠的传输数据的协议。
传输前,采用“三次握手”方式,点对点通信,是可靠的。
在连接中可进行大数据量的传输。
注意:在Java中只要是使用java.net.Socket类实现通信,底层即是使用了TCP协议。
客户端:
总结:
1.TCP通信的客户端的代表类是谁?
① Socket类
② public Socket(String host, int port)
2.TCP通信如何使用Socket管道发送、接收数据。
① OutputStream getOutputStream():获得字节输出流对象(发)
② InputStream getInputStream():获得字节输入流对象(收)
服务端:
ServerSocket
总结:
1.TCP通信服务端用的代表类?
① ServerSocket类,注册端口。
② 调用accept()方法阻塞等待接收客户端连接,得到Socket对象。
2.TCP通信的基本原理?
① 客户端怎么发,服务端就应该怎么收。
② 客户端如果没有消息,服务端会进入阻塞等待。
③ Socket一方关闭或者出现异常、对方Socket也会失效或者出错。
多发多收
同时接受多个客户端消息
使用线程池优化
服务端同时接收多个客户端消息时,如果客户端并发过多,会导致系统瘫痪。所以为了防止这种事情发生,服务端需要使用线程池来优化。
代码中有3个核心线程,最大线程数为5,队列中有2个位置,当3个核心线程都被占用时第4个线程会进入队列等待,第5个线程也会进入队列等待,当第6个线程到来时4,5,6线程中会有一个线程会占用临时线程,当第7个线程来又会有一个等待的线程占用临时线程,当第八个线程来时会被拒绝。
本次使用线程池的优势在哪里?
1.服务端可以服用线程处理多个客户端,可以避免系统瘫痪。
2.适合客户端通信时长较短的场景。