CAPL如何使用socket套接字实现TCP通信(断开连接)

书接上回《CAPL如何使用socket套接字实现TCP通信(数据传输)》,当TCP通信一方数据传输完成后,没有再发送数据的必要时,就可以调用tcpClose()接口主动发起断开连接的请求。断开连接后会释放套接字所占的资源,但不代表套接字会自动赋值为无效值,所以需要手动赋值为无效值。

  tcpClose(clientSocket);
  clientSocket = INVALID_SOCKET;

我们知道:连接请求一般由client发起,断开连接的话client或server都可以。只要你认为你不会再有数据要发送了,你就可以发起断开连接的请求。

一方发起断开连接的请求后,另一方TCP收到断开连接请求时首先自动回复一个ACK确认报文,然后通过回调函数OnTcpClose()通知应用层收到断开连接的请求。

我们在TCP四次挥手机制时讲过,为什么是四次挥手而不是三次?因为接收方收到断开连接请求时,需要确保自己的数据发送完,才能发起自己的断开连接请求。

void OnTcpClose(dword socket, long result)
{
  if (result != 0)
    return;
  if (socket == serverDataSocekt)
  {
      tcpSend(socket, "Hello", 5);
      tcpClose(serverDataSocekt);
      serverDataSocket = INVALID_SOCKET;
  }
}

当获取到断开连接的请求后,把自己的数据该发送的发送完,就可以调用tcpClose(),断开自己这一侧的连接了。这才是一个完整的断开连接的过程。

但是,但是

相关推荐

  1. CAPL如何使用socket实现TCP通信断开连接

    2024-03-29 17:22:04       20 阅读
  2. CAPL如何使用socket实现TCP通信(建立连接

    2024-03-29 17:22:04       21 阅读
  3. Socket(TCP流)篇

    2024-03-29 17:22:04       13 阅读
  4. 【IPC通信--socket--心跳包】

    2024-03-29 17:22:04       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 17:22:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 17:22:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 17:22:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 17:22:04       18 阅读

热门阅读

  1. SSL证书部署完成后仍然不安全是怎么回事?

    2024-03-29 17:22:04       17 阅读
  2. 浏览器中的HttpOnly是什么

    2024-03-29 17:22:04       16 阅读
  3. postcss安装和使用

    2024-03-29 17:22:04       18 阅读
  4. 用python调用VideoReTalking实现电影后期制作

    2024-03-29 17:22:04       15 阅读
  5. js和jquery的区别

    2024-03-29 17:22:04       15 阅读
  6. 挡住程序员去路的不是年龄

    2024-03-29 17:22:04       19 阅读
  7. 计算机网络中---基本概念

    2024-03-29 17:22:04       16 阅读
  8. golang 使用redis

    2024-03-29 17:22:04       18 阅读
  9. Golang基础-4

    2024-03-29 17:22:04       15 阅读
  10. 顺序表的查找

    2024-03-29 17:22:04       15 阅读