当前位置: 首页 > article >正文

TCP/Socket

  1. socket():

    • 功能: 创建一个新的套接字。

    • 参数:

      • domain: 指定通信域,如AF_INET(IPv4)或AF_INET6(IPv6)。

      • type: 指定套接字类型,如SOCK_STREAM(TCP)或SOCK_DGRAM(UDP)。

      • protocol: 通常为0,表示使用默认协议。

  2. bind():

    • 功能: 将套接字绑定到一个本地地址和端口。

    • 参数:

      • sockfd: 套接字描述符。

      • addr: 指向要绑定的地址结构体的指针,通常是sockaddr_insockaddr_in6

      • addrlen: 地址结构体的长度。

  3. listen():

    • 功能: 将套接字设置为监听模式,等待连接请求。

    • 参数:

      • sockfd: 套接字描述符。

      • backlog: 等待连接队列的最大长度。

  4. accept():

    • 功能: 接受一个连接请求,创建一个新的套接字用于与客户端通信。

    • 参数:

      • sockfd: 监听套接字描述符。

      • addr: 指向客户端地址结构体的指针。

      • addrlen: 客户端地址结构体的长度。

  5. connect():

    • 功能: 客户端使用该函数连接到服务器。

    • 参数:

      • sockfd: 套接字描述符。

      • addr: 指向服务器地址结构体的指针。

      • addrlen: 服务器地址结构体的长度。

  6. send():

    • 功能: 发送数据到已连接的套接字。

    • 参数:

      • sockfd: 套接字描述符。

      • buf: 指向要发送数据的缓冲区。

      • len: 要发送的数据长度。

      • flags: 发送标志,通常为0。

  7. recv():

    • 功能: 从已连接的套接字接收数据。

    • 参数:

      • sockfd: 套接字描述符。

      • buf: 指向接收数据的缓冲区。

      • len: 缓冲区的长度。

      • flags: 接收标志,通常为0。

  8. close():

    • 功能: 关闭套接字,释放资源。

    • 参数:

      • sockfd: 套接字描述符。

  9. shutdown():

    • 功能: 关闭套接字的读、写或读写功能。

    • 参数:

      • sockfd: 套接字描述符。

      • how: 关闭方式,如SHUT_RD(关闭读)、SHUT_WR(关闭写)或SHUT_RDWR(关闭读写)

 

以上是tcp的常用接口,接下来讲讲细节:

和udp类似,我们需要先使用socket来创建一个文件,

和udp不同的是,tcp是面向连接的,就要求tcp随时等待被链接,需要讲socket设置为监听状态:

我们用accept接收客户端信息的时候,需要重新定义一个文件描述符,之后我们拿着新的文件描述符直接去通讯,之前的描述符就继续去监听其他新的客户端信息,当我们使用完的时候一定要记得释放文件描述符,要不然会造成文件描述符泄露。、

我们可以使用read,write的方式来通讯,也可以使用recv和send的方式:

 


http://www.kler.cn/a/594554.html

相关文章:

  • lua垃圾回收
  • MySQL:建表,修改,删除
  • Tailwind CSS 学习笔记(三)
  • Swagger2 使用教程
  • 如何根据 CUDA 配置安装 PyTorch 和 torchvision(大模型 环境经验)
  • 【数据库备份】docker中数据库备份脚本——Mongo备份脚本
  • “消失的中断“
  • 解决linux mysql命令 bash: mysql: command not found 的方法
  • Unity 中实例化预制体的完整过程
  • 鲲鹏服务器,系统为:openEuler22.03-LTS (aarch64)Dify 安装教程(详细版)
  • Android第三次面试(网络篇补充)
  • 绿盟科技安全服务面试
  • 如何优化 React 应用性能?
  • 技术进阶:Open WebUI与Ollama的跨平台整合秘籍
  • CUDA编程基础
  • Qt 控件概述 QLabel
  • STM32——独立看门狗(IWDG)
  • 中电金信25/3/18面前笔试(需求分析岗+数据开发岗)
  • 关于运行 npm run serve/dev 运行不起来,node_modules Git忽略不了等(问题)
  • llama源码学习·model.py[3]ROPE旋转位置编码(3)源码中的广播机制