我在网上看到
这是发送、接收函数的原型
int send( SOCKET s, const char FAR *buf, int len, int flags );
int recv( SOCKET s, char FAR *buf, int len, int flags ); 看到网上说
send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里
recv函数仅仅是copy数据,真正的接收数据是协议来完成的
这两句话我明白,就是SOCKET对象底层维护着一个接收和发送的缓存。在发送和接收的时候,都是对这个缓存操作的。现在我的问题是。如果服务器A 的 recv正在等待对方的数据堵塞在那里。对方客户A 的send已经把他要发送的数据copy到了他的缓冲区里,这时,突然对方关掉了SOCKET那么复制进客户A的发送缓存中的数据是否还会发送到我这边?我这边是接收到完整的数据。还是返回服务器A 的recv函数返回SOCKET_ERROR?请高手指点
这是发送、接收函数的原型
int send( SOCKET s, const char FAR *buf, int len, int flags );
int recv( SOCKET s, char FAR *buf, int len, int flags ); 看到网上说
send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里
recv函数仅仅是copy数据,真正的接收数据是协议来完成的
这两句话我明白,就是SOCKET对象底层维护着一个接收和发送的缓存。在发送和接收的时候,都是对这个缓存操作的。现在我的问题是。如果服务器A 的 recv正在等待对方的数据堵塞在那里。对方客户A 的send已经把他要发送的数据copy到了他的缓冲区里,这时,突然对方关掉了SOCKET那么复制进客户A的发送缓存中的数据是否还会发送到我这边?我这边是接收到完整的数据。还是返回服务器A 的recv函数返回SOCKET_ERROR?请高手指点
解决方案 »
- 求高手解决vs2008问题
- 菜鸟级c++的运算符重载问题
- kkjie 软件实现方法,知道的请进。
- vc中,钩子的回调函数的参数WPARAM和LPARAM的问题__听着有点绕嘴^
- 多线程的初级问题?
- 变量1=****(1,3,变量2),在变量2中的第一位开始,向右的3个字符给变量1,这个函数是什么?
- 屏幕不刷新???
- 怎么FD_WRITE FD_READ一起触发了呢?
- 对话框与视图联系有什么好方法?
- vc6 MFC dll设置UNICODE字符集导致error LNK1112:机器类型冲突
- 不显示删除回复显示所有回复显示星级回复显示得分回复 新手有关SNMP++的问题,会的来指点一下,谢谢
- 第四维是啥
socket就是对它的实现
如果对方是非法关闭,比如是断电等,则这边的socket收不到对方的关闭通知包,则这边的socket的send的会一直会阻塞在哪里,直到超时,否则会永远的阻塞住了、