社区
网络编程
帖子详情
客户端什么时候产生FD_READ
huanchunling
2010-11-05 11:51:58
我在server端一次发送了2百万个字节,send()函数也返回200万个字节,说明所有字节都发送成功了,我想知道在client低层缓冲区是在接受完所有的的字节后,才发送FD_READ,如果不是,那客户端什么时候发送的这个FD_READ呢
还有一个问题
send()到底一次能发送多少个字节的数据,我发送200百万可以,500百万也可以?
...全文
141
6
打赏
收藏
客户端什么时候产生FD_READ
我在server端一次发送了2百万个字节,send()函数也返回200万个字节,说明所有字节都发送成功了,我想知道在client低层缓冲区是在接受完所有的的字节后,才发送FD_READ,如果不是,那客户端什么时候发送的这个FD_READ呢 还有一个问题 send()到底一次能发送多少个字节的数据,我发送200百万可以,500百万也可以?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wocow3
2010-11-06
打赏
举报
回复
TCP?
recv()一般会在三种情况下返回
1。接收的TCP包带有PUSH标志;
2。接收缓冲区满;
3。0.5秒内没有收到更多数据;
huanchunling
2010-11-06
打赏
举报
回复
我一直搞不懂send 和 recv()函数的内部是怎么个逻辑,有没有什么好的文档可以介绍,
mayudong1
2010-11-05
打赏
举报
回复
client端只要有可读的数据就会有FD_READ消息
Eleven
2010-11-05
打赏
举报
回复
有数据到达
xgPaul
2010-11-05
打赏
举报
回复
客户端的接收缓冲区只要有数据就会响应FD_READ。。。
visualwind
2010-11-05
打赏
举报
回复
只要有数据到达就会FD_READ,如果你要想在接受完所有的的字节后才发送FD_READ的话,就只能自己封装一层了。
send一次发送多大都可以,到了底层会自动按MTU单元大小分包的,无论一次send发多少自己,实际发在网络上的数据包大小都是MTU的大小。
FD
_WRITE 和
FD
_
READ
的触发条件
FD
_WRITE触发条件: 1.client 通过connect(WSAConnect)首次和server建立连接时,在client端会触发
FD
_WRITE事件 2.server通过accept(WSAAccept)接受client连接请求时,在server端会触发
FD
_WRITE事件 3.send(WSASend)/sendto(WSASendTo)发送失败返回WSAEWOULDBLOCK
网络事件、消息中的
FD
_WRITE。
以前对于
FD
_WRITE是怎么触发的,相关书籍上虽然清楚的列出了三种条件,却也是看不太明了。在今天,自己实现了一个通信程序的第一步骤:消息交换(呵呵),用单步跟踪的方式,在服务端程序上清楚的看了一回
客户端
程序连接、发送数据时服务端程序的消息反应。 我的程序中,接收的消息不多,是主要的四种:
FD
_ACCEPT 、
FD
_
READ
、
FD
_WRITE 、
FD
_CLOSE。程序开始,连
Linux下I/O多路转接之select --
fd
_set
Linux下I/O多路转接之select --
fd
_set
MFC 基于SOCKET 实现服务端
客户端
一对多
1.程序说明 开发环境是VS2008 ,基于socket实现一个服务端和多个
客户端
通信。 服务端: 指定端口,关闭和开启服务器监听; 将已连接
客户端
显示在
客户端
CListBox列表; 监听
FD
_ACCEPT|
FD
_
READ
|
FD
_CLOSE事件; 可选择和特定的已连接
客户端
通信; 通信数据和系统信息滚动显示。
客户端
: 指定服务器IP、端口,关闭和连接服务器; 监听
FD
_CONNECT|
FD
_
READ
|
FD
_CLOSE事件, 顺便做了一个测试程序,测试程序作用是循环打开指定个数的
客户端
socket select多路连接,及
fd
_set用法
fd
_set用法:https://blog.csdn.net/w00347190/article/details/100972645 /***********************************
fd
_set 用法: void
FD
_SET(int
fd
,
fd
_set *
fd
set); void
FD
_CLR(int
fd
,
fd
_set *
fd
set); void
FD
_ISSET(int
fd
,
fd
_set *
fd
set); void
FD
_ZERO(
fd
_set *
fd
.
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章