Linux网络编程3
创始人
2024-09-25 11:50:11
0

并发服务器

1.TCP多进程并发服务器

服务器端:

客户端:

2.TCP多线程服务器

服务器端:

客户机端:

需要学习的函数还有

1. send() 函数

send() 函数用于在套接字上发送数据。它是网络编程中发送数据到对端的主要函数之一。

函数原型

#include
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
  • sockfd:套接字文件描述符,是通过socket()函数创建的。
  • buf:指向要发送数据的缓冲区的指针(发送缓冲区的首地址)。
  • len:要发送的数据的字节数。
  • flags:调用send()时的选项标志,通常设置为0(作用和write相同)。其中:MSG_DONTWAIT,非阻塞。MSG_OOB:用于TCP类型的带外数据(out of band(通常用于终中断的操作))

返回值:成功时返回发送的字节数(可能小于请求发送的字节数),出错时返回-1并设置errno。

2. recv() 函数

recv() 函数用于从套接字接收数据。它是网络编程中接收对端发送数据的主要函数之一。

函数原型

#include
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
  • sockfd:套接字文件描述符。
  • buf:指向接收数据的缓冲区的指针。
  • len:缓冲区的大小,即最多可以接收的字节数。
  • flags:调用recv()时的选项标志,通常设置为0。

返回值:成功时返回接收到的字节数(可能小于请求接收的字节数,例如,当对方发送的数据量小于请求量时),连接被对方正常关闭时返回0,出错时返回-1并设置errno。

3. read() 函数

read() 函数是UNIX/Linux系统调用之一,用于从文件描述符(包括套接字)读取数据。在网络编程中,它也可以用来从套接字接收数据,但通常recv()函数更为常用,因为recv()提供了更丰富的错误处理和选项。

函数原型

#include
ssize_t read(int fd, void *buf, size_t count);
  • fd:文件描述符,对于套接字编程来说,这就是套接字文件描述符。
  • buf:指向缓冲区的指针,用于存储读取的数据。
  • count:请求读取的字节数。

返回值:成功时返回读取的字节数(可能小于请求读取的字节数),到达文件末尾时返回0,出错时返回-1并设置errno。

区别与联系

  • 使用场景:在网络编程中,send()recv() 专门用于套接字通信,而 read() 虽然也可以用于套接字,但更通用,可用于文件、管道等多种类型的文件描述符。
  • 功能send()recv() 提供了更丰富的网络编程特性,如消息边界的保持(在某些套接字类型中),而 read() 则更基础,更通用。
  • 性能:在大多数情况下,对于套接字通信,send()recv() 的性能与 read() 相当,但使用send()recv() 可以使代码更清晰,更易于理解和维护。

相关内容

热门资讯

玩家揭秘!微信拼三张房卡怎样开... 微信游戏中心:新超圣在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!拼三张房卡专卖店联系... 微信游戏中心:欢乐游在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信链接炸金花房卡怎... 微信游戏中心:老夫子在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信拼三张怎么买房卡... 微信游戏中心:招财猫在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!拼三张链接房卡怎么搞... 微信游戏中心:皇豪互娱在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“...
玩家揭秘!我买炸金花房卡链接,... 微信游戏中心:新九五在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信群牛牛房卡到哪里... 微信游戏中心:在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信炸金...
玩家揭秘!微信炸金花房卡找谁买... 微信游戏中心:在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信炸金...
玩家揭秘!微信怎样开炸金房间卡... 微信游戏中心:新皇豪在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信里面炸金花链接房... 微信游戏中心:新全游在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信斗牛购买房卡方法... 微信游戏中心:狂飙在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信...
玩家揭秘!炸金花房卡链接在哪弄... 微信游戏中心:新蓝鲸在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信怎么开牛牛房间,... 微信游戏中心:新八戒在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信里面炸金花链接房... 微信游戏中心:新圣游在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信里面拼三张链接房... 微信游戏中心:新超圣在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!微信拼三张购买房卡,... 微信游戏中心:新琉璃在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...
玩家揭秘!斗牛微信房卡怎么购买... 微信游戏中心:狂飙在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信...
玩家揭秘!炸金花好友房卡在哪里... 微信游戏中心:卡贝在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信...
玩家揭秘!微信牛牛房卡链接去哪... 微信游戏中心:橘子在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微信...
玩家揭秘!微信群开牛牛房卡,新... 微信游戏中心:新永和在哪里买打开微信,添加客【33699510】,进入游戏中心或相关小程序,搜索“微...