网络套接字(主TCP)

发布时间:2026/9/22 6:50:45
网络套接字(主TCP) socket返回值创建网络套接字创建成功返回值是文件描述符如果失败则是 -1。创建出来的文件是全双工的。什么是全双工呢通俗讲就是可以 边写边读将文件分为读缓冲区和写缓冲区因此你经常看到在操作创建出来的网络套接字时对同一个fd 进行读写操作。参数目前就我使用来说第一个参数int domain是地址族也就是你选择使用什么网络进行通信常见的AF_INET (IPV4)AF_INET (IPV6)第二个参数int type:是套接字类型大概分为两种第一种SOCK_STREAM TCP是一种可靠连接有序的字节流。后续还有bind listen accept 等操作第二种SOCK_DGRAM UDP是无连接不可靠报文式的数据。只用sendto/recvfrom第三个参数int protocol:一般填0。bind一般客户端不需要bind 因为服务器难以知道每个客户端的端口号而服务器的端口号是比较通用的并且在下载的安装包中常常有端口号服务器ip等信息因此一般只需要服务器去绑定给他发消息的客户端端口号ip地址就可以了。返回值成功返回0失败返回 -1。参数第一个参数int sockfd:第一个参数比较简单就是你socket出来的文件描述符。第二个参数const struct sockaddr*addr:第二个参数是这个函数最为复杂的注意看此处的 sockaddr 这个类型它是对sockaddr_in和sockaddr_on的封装如图片所示因此你在bind之前跟据自己的用途还需要先创建对应的结构体网络通信就是sockaddr_in ,通常是服务器进行bind到此就完成了一个基础的bind。第三个参数socklen_addrlen:这个参数就是你sockaddr 的大小比较简单。listen:服务器需要 listen 监听来自客户端的请求把socket创建的文件描述符fd 标记为被动监听套接字在内核创建半连接队列和全连接队列。返回值成功返回0失败返回-1。参数第一个参数int sockfd这个参数是你socket创建的文件描述符将这个文件描述符变为监听套接字。用于等待客户端接入。第二个参数backlog限制全连接队列的最大容量。半连接的队列由系统配置分配大小不受backlog控制。accept:从listen 对应的全连接队列去除一条连接为其创建文件描述符开始通信若全连接队列为空则阻塞等待。返回值:成功返回新创建的文件描述符fd 调用失败则返回-1。第一个参数sockfd:是监听套接字也就是listen 后过的sockfd。在全连接队列里面获取连接。第二个参数addr:传入 sockaddr_in 结构体的地址内核会填充客户端的ipport等。第三个参数addrlen:是传入客户端结构体的大小。connect:向远端服务器发起三次握手请求建立连接一般由客户端发起。返回值连接建立成功返回0失败返回-1。第一个参数sockfd:是自己客户端socket()创建的连接用来接受和发送消息。第二个参数addr:传入 sockaddr_in 结构体的地址结构体是服务器地址信息 包括ipport等。第三个参数addrlen:是传入服务器结构体的大小。write():read():send():recv():1. 适用范围read/write通用IO文件、管道、socket都能用send/recv仅能操作套接字。​2. 参数差异send、recv多一个flags标志参数可设置特殊收发规则读取紧急数据、非阻塞读取等read、write无此功能。​3. 调用关系不带flags的recv等同于read不带flags的send等同于write。close():关闭文件描述符。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询