王朝网络
分享
 
 
 

提醒初学者注意 send(sendto) recv(recvfrom) 中的 参数flags

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

/*

说明:

1 这篇文章是给象我一样的初学者看的,如果您有一些经验了,请不要看,因为它会花费您宝贵的时间。

2 使用 MSDN 版本:MSDN Library - October 2001

*/

第一次写这个玩意,感觉很新鲜。

也希望这件事(写文档)对我和大家有好处。

因为在开发的过程中出现一些弯路,后来发现了。想提醒大家注意。

刚开始接触 winsock 编程是2002-11-30,买的是《Visual C++ 6.0 网络编程实作教程》这本书(我个人认为这是一本很好的 winsock 编程的书,她很适合初学者),

刚开始使用 winsock 的时候, 是用CAsyncSocket这个类,在 Send and Recvive的时候,nFlags 都有默认的值 0 , 所以没有引起重视。

/*CAsyncSocket::Send

virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0 );

CAsyncSocket::Receive

virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 );

*/

并且使用的还比较顺手,没有大的毛病出现。

到了后期,因为我自己想要尝试不同的东西,想要自己使用自己的CMySocket类,封装winsock api,(一直以来我也喜欢自己封装比较底层的东西,感觉好一些)。

问题来了,在封装的过程中,我查看MSDN

/*

int send (

SOCKET s,

const char FAR * buf,

int len,

int flags

);

The flags parameter can be used to influence the behavior of the function beyond the options specified for the associated socket. The semantics of this function are determined by the socket options and the flags parameter. The latter is constructed by or-ing the following values:

Value Meaning

MSG_DONTROUTE Specifies that the data should not be subject to routing. A

Windows Sockets service provider can choose to ignore this

flag.

MSG_OOB Send out-of-band data (stream-style socket such as SOCK_STREAM

only. Also see DECnet Out-Of-band data for a discussion of this

topic).

*/

/*我个人是这样翻译的:

flags 参数可以影响和(本地 socket)相关联的远端 socket 的行为,socket 选项和 flags 参数决定了这个函数(send函数)的功能。后者(flags 参数)可以是以下值的 或(|)。

值的意义

MSG_DONTROUTE 表明(所发送的)数据不应该通过 routing,windows socket service provider可以选择忽略这个标志

(《Windows网络编程技术》P141 里面是这样说的:MSG_DONTROUTE标志要求传送层不要将它发出的包路由出去,由基层的传送决定是否实现这一请求)

MSG_OOB 发送 OOB data(比如 流形式的 socket,仅有SOCK_STREAM适用 ,也可以参看DECnet 关于Out-Of-band data这个主题的讨论)

*/

在send时,我选了MSG_DONTROUTE标志,因为我没有带外数据啊,(我以为只能有这么两个值可以填进去啊!)

在recv时,我选了MSG_PEEK。

结果我在recv的时候得不到正确的结果,还不知道为什么错。

查了一个上午,哈哈,终于知道是标志的设置问题。

我现在把他们设置为 0 。

工作的很好了。

你们也有遇到这样的问题吗?

给象我一样的初学者提个醒。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有