问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

WSASend()的评述

发布网友 发布时间:2022-05-01 08:45

我来回答

1个回答

热心网友 时间:2022-06-26 22:52

WSASend覆盖标准的send函数,并在下面两个方面有所增强:
>它可以用于overlapped socket(重叠socket)上以进行重叠发送的操作(简单地理解为就是异步send也可以了)
>它可以一次发送多个缓冲区中的数据来进行集中写入。应该相当于unix上的writev,好处看来是避免Nagle算法。
WSASend用于在一个面向连接的socket(第一个参数s)上发出的数据。It can also be used, however, onconnectionless sockets that have a stipulated default peer address established through theconnectorWSAConnectfunction.
对于overlapped sockets来说 (通过WSASocket函数,用WSA_FLAG_OVERLAPPED标示创建),发送消息时使用的是重叠IO(overlapped I/O), 除非lpOverlapped and lpCompletionRoutine 都是NULL. 这时, 这个socket被视为非重叠的socket. 当所有的缓冲区都被发送完成了,将会执行一个动作来表示操作完成,这个动作可能是调用完成例程或者是引发一个event对象。如果操作没有立即完成, 最终的完成状态通过完成例程或者 WSAGetOverlappedResult得到
对于非重叠的sockets来说, 最后两个参数(lpOverlapped, lpCompletionRoutine) 被忽略,WSASend 和 send具有同样的语意。数据从用户缓冲区拷贝到发送缓冲区中(应该是指系统的socket堆栈)。如果socket是非阻塞的又是同时是面向流的(简单地理解为tcp), 同时发送缓冲区没有足够的大小, WSASend将只发送用户缓冲区中的部分数据。 如果同样缓存大小,而socke是阻塞的socket, WSASend将阻塞直到用户所有的数据被发送成功。
Note socket配置项SO_RCVTIMEO and SO_SNDTIMEO只能被用于阻塞的sockets。
lpBuffers这个参数是一个指针,它指向一个WSABUF结构的数组。这个数组可以是瞬态的(transient)。所谓瞬态的含义如下:如果这个操作时重叠的操作,服务提供者有责任在这个调用返回之前保存WSABUF数组。这允许用户的应用使用一个基于栈的WSABUF数组。就是说你可以定义一个局部变量,当wsasend返回后如果是重叠IO呢,你的函数局部变量已经被销毁了(例如你的函数已经返回了)。系统实际上还没发送数据呢,那你不要担心,系统会保存这个数组的副本。
对于面向消息的socket(UDP?), 不要超过下层协议的最大消息大小,这个值可以通过SO_MAX_MSG_SIZE这个socket配置项得到。如果数据太长无法原子地发送,返回WSAEMSGSIZE, 没有数据发送成功。
Windows Me/98/95:TheWSASendfunction does not support more than 16 buffers.
NoteWSASend的成功完成不代表数据已经发送成功。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电视屏幕不亮但有声音是怎么回事 电视只出声音不出画面怎么调 每天做踩单车的运动能瘦腿吗? 踩单车能瘦腿吗 知道踩自行车能瘦腿吗 注意姿势才是关键 踩自行车可以瘦腿吗 踩单车的好处是什么?怎样进行瘦腿? Adobe AIR是什么?能做什么? adobeair是什么软件,可不可以卸载?? 15--18万之间的车 WSASocket()的定义 形容已经准备好了,就等命令的成语 有等待命令的意思是哪个四字词语或成语 形容已经准备好了,就等命令的成语有哪些? 王者归来捕鱼是真的吗 关于海盗船的大型手游 王者8号捕鱼释放器 安卓平板有哪些好玩的游戏? 田宫的TS80保护漆是水性的还是油性的? 电镀高达模型,各位大神帮帮忙 用田宫的 TS喷罐 喷高达 模型 需要上水补土吗? 田宫的喷灌TS1-64类型的油性漆和水性漆喷出来的颜色是一样吗?知道的请说下,很感谢 田宫罐装喷漆 TS-6消光黑 效果好吗? 用了之后是不是可以不用上消光漆也有消光效果? 关于高达模型喷漆问题! 全自动洗衣机不排水是什么问题{E1/49} 如何看待黑背豺的育幼机制? 嚣张到抢豹子食物的棕鬣狗,凭什么如此嚣张? 斑鬣狗和棕鬣狗都是以食腐为主吗? 核能的优点和缺点有哪些 核电有怎样的发展过程? 批处理的等待命令 福岛核废水为什么不能循环再使用? net等命令不能直接从cmd里运行 什么是重叠套接字? ping2.obj : error LNK2001: unresolved external symbol __imp__WSASocketA@24 dos有等待命令吗 Apache自动关闭?怎么办啊? 环境污染的后果shi..... 一座军营百个兵,列好队伍等命令,一旦需要就出去,牺牲自己换光明。猜生肖? 如何查看电脑发送和收到的数据包? 怎么训练狗狗等命令吃饭,提示,我的狗狗一见吃的就像几十天没吃过饭的样子,跟疯了一样 mfc编译成功 运行不出界面 水源热泵的发展及其在我国的利用 命令行中不能用help等命令是咋回事? 如何计算微型真空泵的抽吸力?需要用在物体吸附上 BAT编程的语言中有没有等待命令? apache如何禁止某地区访问? 一座军营百个兵,列好队伍等命令。 一旦需要就出去,牺牲自己换光明。猜一生肖 吸油烟机为什么把上面的管拔掉就抽的很厉害一插上管就不抽风了? C++ 创建进程中隐藏窗体的问题