recvfrom()的最后一个参数问题

i=sizeof(structsockaddr);iLen=recvfrom(mfg_fd,(char*)RecvBuf,RECV_MAX_LEN,0,(structso... i = sizeof(struct sockaddr);
iLen = recvfrom(mfg_fd,(char *)RecvBuf,RECV_MAX_LEN,0,(struct sockaddr*)&remote,&i);
问题一:最后一个参数,为什么sento()是int,而recvfrom必须是指针
问题二:我可以节省变量i,而直接用& sizeof(struct sockaddr)做最后一个参数吗?
请指教~~
展开
 我来答
nusicvvv
2012-09-17 · TA获得超过2575个赞
知道大有可为答主
回答量:3576
采纳率:33%
帮助的人:1997万
展开全部
这个就看socket 的声明吧, 都这么做没办法, 这个确实很蠢。

问题2 不可以

sizeof(struct sockaddr) 对于程序来说就是个常数, 你能用 &2 来代替指向2的指针么,这个不行,你说的就不行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9d8c572
2023-02-27 · TA获得超过128个赞
知道答主
回答量:6
采纳率:0%
帮助的人:2472
展开全部
给后来人个解答吧,在服务端角度看:
传入时:告诉recvfrom,存放客户端的struct sockaddr信息的内存空间大小是多少
那为什么需要传指针呢?原因是recvfrom调用后需要重新设置这个参数的值,将其设置为实际接收到的信息的大小。这个可以看man手册,或者自己测试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式