首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发送()函数在C中如何处理如果不是所有的字节都被发送了?

发送()函数在C中如何处理如果不是所有的字节都被发送了?
EN

Stack Overflow用户
提问于 2013-01-07 00:32:07
回答 3查看 19K关注 0票数 9

我需要将数据发送到套接字,基本上是传输文件,

根据send()函数docs,它说,

代码语言:javascript
复制
If no error occurs, send returns the total number of bytes sent, which can be less than the number requested to be sent in the len parameter. Otherwise, a value of SOCKET_ERROR is returned,

我担心的是,返回值可能小于请求值。因为我正在从一个文件读取和写入一个套接字,因为它可能不会发送所有的字节,我猜如果没有发送满的缓冲区,我将不得不重试?在这种情况下,我想我必须以某种方式将同一缓冲区上的指针按读取的字节数前进,然后再次发送它??

我只想知道这是不是真的?或者有没有更聪明的方法,这样所有请求的数据都会被发送,而我不必担心什么时候不是所有数据都被发送了?

谢谢,

EN

Stack Overflow用户

发布于 2013-01-07 00:34:17

是的,您确实需要担心send (或write等)返回的值。没有非常聪明的方法可以绕过它,但有一些由优秀的Richard Stevens编写的函数,即readnwriten

This article on informit似乎有这些函数的一个版本。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14184181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档