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() 可以使代码更清晰,更易于理解和维护。

相关内容

热门资讯

安卓出厂系统和最新系统,全面升... 亲爱的数码控们,你是否也像我一样,对手机系统的新鲜玩意儿充满好奇?今天,咱们就来聊聊安卓出厂系统和最...
掌上医院安卓系统,智慧医疗新时... 掌上医院安卓系统:你的私人健康小助手想象你正躺在床上,手机轻轻一滑,就能预约挂号、查看报告、了解医生...
安卓系统如何冻结程序,提升手机... 手机里那些占内存、耗电快的应用,是不是让你头疼不已?别急,今天就来教你怎么用安卓系统冻结这些“捣蛋鬼...
手机变身安卓系统,探索系统转换... 哇塞,你有没有想过,你的手机竟然可以变身成为安卓系统的小能手?没错,就是那个我们日常离不开的智能手机...
window平板转安卓系统,转... 亲爱的平板用户们,你是否曾想过,你的Windows平板电脑也能变身成为安卓小精灵呢?没错,今天我要跟...
安卓系统qq离线设置,畅享无打... 亲爱的安卓手机用户们,你们是不是也有过这样的烦恼:明明想安静地放松却总是被QQ消息打扰得心烦意乱?别...
安卓刷win系统体验,刷机攻略... 哇塞,你有没有想过,你的安卓手机也能变身成Windows系统的超级英雄?没错,就是那个我们熟悉的Wi...
安卓设备的系统刷写,操作步骤、... 你有没有想过,你的安卓手机其实就像一个等待你发挥创意的画布呢?没错,就是那个你每天捧在手心里的宝贝—...
安卓系统双开的软件,实现多账号... 你有没有想过,在手机上同时运行两个相同的APP,是不是就像拥有两个超级英雄一样酷炫呢?没错,这就是安...
安卓系统绘画app推荐,全方位... 你有没有想过,在手机上也能画出美轮美奂的作品呢?没错,现在科技这么发达,安卓系统上的绘画app可是五...
安卓系统看广告视频,智能播放与... 你有没有发现,现在手机上那些安卓系统的应用,动不动就弹出来广告视频?真是让人又爱又恨啊!今天,就让我...
安卓系统安装歌曲软件,热门歌曲... 你有没有想过,手机里没有喜欢的歌曲,那感觉就像是没有了灵魂?别急,今天就来给你支个招,教你在安卓系统...
如何退出安卓升级系统,实用技巧... 手机突然弹出一个升级提示,你心里是不是有点小紧张呢?别担心,今天就来手把手教你如何退出安卓升级系统,...
安卓平板系统克隆软件,轻松实现... 你有没有想过,把你的安卓平板上的系统,像变魔术一样克隆到另一台平板上?听起来是不是很神奇?别急,今天...
小米8 是安卓系统,安卓系统下... 你有没有想过,手机的世界里,安卓系统就像是个万能的魔法师,而小米8就是那个挥舞魔杖的勇敢少年!今天,...
安卓系统的职业选手,职业选手的... 职场高手,安卓战场上的风云人物 ?亲爱的游戏迷们,你是否曾在王者荣耀的战场上,目睹过那些如风似电的操...
安卓系统后台耗电高,高效管理策... 亲爱的手机控们,你们是不是也和我一样,每天对着手机,却总是担心电量不够用呢?尤其是安卓系统的小伙伴们...
小米3安装安卓系统,操作指南与... 亲爱的手机控们,你是否曾对自家的小米3手机心生厌倦,渴望给它换一副新颜?别急,今天就来手把手教你如何...
警察恢复安卓手机系统,警察如何... 手机突然卡成“龟速”,应用动不动就闪退,是不是感觉自己的安卓手机被“诅咒”了?别急,警察叔叔来帮你恢...
安卓手机有双系统,安装、设置与... 你有没有想过,你的安卓手机其实是个“变形金刚”,可以瞬间变身成两个不同的世界?没错,就是安卓手机有双...