CrazyDailyQuestion icon indicating copy to clipboard operation
CrazyDailyQuestion copied to clipboard

每日一问: 水滴石穿,聚沙成塔,坚持数月, 必有收获~

Results 100 CrazyDailyQuestion issues
Sort by recently updated
recently updated
newest added

为了保证双方都能通知对方“需要释放连接”,即在释放连接后都无法接收或发送消息给对方 - 需要明确的是:TCP是全双工模式,这意味着是双向都可以发送、接收的 - 释放连接的定义是:双方都无法接收或发送消息给对方,是双向的 - 当主机1发出“释放连接请求”(FIN报文段)时,只是表示主机1已经没有数据要发送 / 数据已经全部发送完毕; > 但是,这个时候主机1还是可以接受来自主机2的数据。 - 当主机2返回“确认释放连接”信息(ACK报文段)时,表示它已经知道主机1没有数据发送了 但此时主机2还是可以发送数据给主机1 - 当主机2也发送了FIN报文段时,即告诉主机1我也没有数据要发送了 此时,主机1和2已经无法进行通信:主机1无法发送数据给主机2,主机2也无法发送数据给主机1,此时,TCP的连接才算释放

##### Socket服务端的编写 - Step 1:创建ServerSocket对象,绑定监听的端口 - Step 2:调用accept()方法监听客户端的请求 - Step 3:连接建立后,通过输入流读取客户端发送的请求信息 - Step 4:通过输出流向客户端发送响应信息 - Step 5:关闭相关资源 ```java public static void main(String[] args) throws IOException { //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket =...

- Step 1:创建ServerSocket和Socket - Step 2:打开连接到的Socket的输入/输出流 - Step 3:按照协议对Socket进行读/写操作 - Step 4:关闭输入输出流,以及Socket

- 即套接字,**是一个对 TCP / IP协议进行封装 的编程调用接口(API)** 用來描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发送请求或者 应答网络请求 Socket是支持TCP/IP协议的网络通信的基本操作单元,是对网络通信过程 中端点的抽象表示,包含了进行网络通信所必须的五种信息 1. 连接所使用的的协议 2. 本地主机的IP地址 3. 本地远程的协议端口 4. 远程主机的IP地址 5. 远地进程的协议端口 > 1. 即通过`Socket`,我们才能在Andorid平台上通过 `TCP/IP`协议进行开发 > 2. `Socket`不是一种协议,而是一个编程调用接口(`API`),属于传输层(主要解决数据如何在网络中传输) > 3. 成对出现,一对套接字...

这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

![image](https://user-images.githubusercontent.com/17723631/97495000-1608bd80-19a2-11eb-8f1d-066e11a9231d.png) ![image](https://user-images.githubusercontent.com/17723631/97495012-1acd7180-19a2-11eb-9e3e-f8907b05d042.png)

![image](https://user-images.githubusercontent.com/17723631/97493881-91696f80-19a0-11eb-9f72-3315a258ad14.png)

![image](https://user-images.githubusercontent.com/17723631/97494205-f45b0680-19a0-11eb-923a-fc89905c8017.png) ![image](https://user-images.githubusercontent.com/17723631/97494215-fae97e00-19a0-11eb-9e62-bd4e45c02910.png) ![image](https://user-images.githubusercontent.com/17723631/97494229-ff159b80-19a0-11eb-88f8-5577db2e9708.png) ![image](https://user-images.githubusercontent.com/17723631/97494239-02a92280-19a1-11eb-95b9-857bbddae1d1.png)

![image](https://user-images.githubusercontent.com/17723631/97494441-47cd5480-19a1-11eb-97f3-d55e49818ce1.png)

![image](https://user-images.githubusercontent.com/17723631/97494582-72b7a880-19a1-11eb-9bf9-212f51e86518.png) ![image](https://user-images.githubusercontent.com/17723631/97494619-7fd49780-19a1-11eb-9149-787363fdb072.png) ![image](https://user-images.githubusercontent.com/17723631/97494635-8400b500-19a1-11eb-8a4b-d5c17e5b6aba.png)