TCP:面向连接的协议 ?? ?数据传递之前,首先建立连接,通过三次握手原则,能保证数据的安全性
通过三次握手原则: ?? ?第一次:客户端像服务端发送请求:请求建立连接(确定服务端是否存在) ?? ?第二次:服务端的响应,响应同意建立连接 ?? ?第三次:开始建立连接
TCP发送 ?? ?1.创建客户端的Socket对象 ?? ??? ?new Socket(String host,int port); ?? ?2.创建输出流,写数据 ?? ??? ?getOutputStream(); ?? ?3.关释放资源 ?? ??? ?close()
TCP接收 ?? ?1.创建服务端的Socket对象(ServerSocket) ?? ??? ?new ServerSocket(int port); ?? ?2.调用ServerSocket监听端口号,接收数据 ?? ??? ?accept(); ?? ?3.创建输入流,读数据 ?? ??? ?getInputStream(); ?? ??? ?read(); ?? ?4.解析数据,并在控制台显示 ?? ??? ?new String(byte[] byte, int off,int length) ?? ?5.关释放资源 ?? ??? ?close()
?
注意: ?? ?服务端必须存在 ?? ?accept():监听端口号,创建接收数据的通信管道,如果多次调用,会无法接收数据 ?? ?底层使用IO流进行读写数据,read()会阻塞程序的运行 ?? ?read阻塞:默认情况下,read不知道当前所要读的数据有多少条(读取不到-1),所以阻塞等待下一跳数据 ?? ?解决read阻塞问题: ?? ??? ?shutdownOutput();//再数据传输之后加上了一个末尾(-1) ?? ??? ?shutdownInput();//再数据传输之后加上了一个末尾(-1) ?? ??? ? ?? ?两端约定最大数据量
|