Windows 下recv() 和Linux下的recv()是不是一样?

ToConnection 2015-08-31 10:07:37
1. Linux 下recv() 函数
int ret = recv(sockfd, buf, len, MSG_PEEK); 意思是//MSG_PEEK 读取队列中指定大小的数据,但不取出
只是窥探了一下外来的数据

对于windows下recv()函数是不是也这样用?
这个参数MSG_PEEK 在windows下 设置成什么相当于Linux 下的read?
是不是linux x下的recv ()的 MSG_PEEK参数,和windows 下的recv() MSG_PEEK 参数是一个意思


2.
ssize_t recv_peek(int sockfd, void *buf, size_t len)
{
while (1)
{
int ret = recv(sockfd, buf, len, MSG_PEEK);
if (ret == -1 && errno == EINTR)
continue;
return ret;
}
}

Linux下的中断和windows下的中断是不是一样?
...全文
742 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinkon007 2016-02-22
  • 打赏
  • 举报
回复
windows下执行recv后,协议栈会恢复接收窗口的大小,数量就是recv收到的字节数。 linux下执行recv带上PEEK标签后,由于没有消除接收队列里的数据,协议栈窗口是不恢复的。
  • 打赏
  • 举报
回复
改动很小。如果你是用c做的。那完全一样。如果你是用mfc的。那就界面显示等等不一样。用标准c++那也一样。
信阳毛尖 2015-09-09
  • 打赏
  • 举报
回复
linux下可以理解为标准,Windows环境中由于微软做了一些包装,但基本上差不多(MFC Socket类就另说了)
ToConnection 2015-08-31
  • 打赏
  • 举报
回复
哦,在学习中
jiqiang01234 2015-08-31
  • 打赏
  • 举报
回复
不完全一样,不过几乎一样
赵4老师 2015-08-31
  • 打赏
  • 举报
回复
MSG_PEEK Peek at the incoming data. The data is copied into the buffer but is not removed from the input queue. This flag is valid only for nonoverlapped sockets.

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧