socklen_t *,recvfrom()中第六个参数的类型,我被该类型蹂躏了
TMD,写的SOCKET程序收不到东西,就是因为它!NND,用int *强转一下竟然不行,找了半天才知道错在这里。郁闷~ 你倒是说下阿,大哥 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);src_addr和addlen都是in,out参数, 在传入时必须预先赋值*addrlen, 让其尺寸等于传入的src_addr指向的内存大小, recvfrom函数会将对端的地址填到src_addr中, 地址长度填入addrlen中, 但如果你给的addrlen不够长, 操作如下: The returned address is truncated if the buffer provided is too small; in this case, addrlen will return a value greater
than was supplied to the call. 我每次都按如下计算下
socklen_t socklen = sizeof(struct sockaddr); 这位同学自己还没学明白又出来误导他人了, 能分清sockaddr, sockaddr_in, sockaddr_in6的区别吗?
IPV4/IPV6/UNIX-DOMAIN兼容做法:struct sockaddr_storage addr;
socklen_t socklen = sizeof(addr)dengxiayehu 发表于 2012-10-14 09:09 static/image/common/back.gif
我每次都按如下计算下
socklen_t socklen = sizeof(struct sockaddr); 回复 5# linux_c_py_php
目前公司也就仅仅基于IPV4,我也就是这样用的。 那我告诉你, 你用错了:
socklen_t len = sizeof(struct sockaddr_in);
这才是正确的, 不知道你是如何正确运行你在公司写的程序的.
dengxiayehu 发表于 2012-10-14 12:09 static/image/common/back.gif
回复 5# linux_c_py_php
目前公司也就仅仅基于IPV4,我也就是这样用的。 回复 5# linux_c_py_php
一口一个误导,论坛,交流,我只能以自己的角度来参与。
不对的,当然虚心接受。
你牛,你来啊,大家有问题,就直接@你好了,这样行吧。 其实你那样用是没问题的, 我想起来sockaddr和sockaddr_in的内存尺寸是一样的. 你回答的有问题, 我有权利提醒楼主, 你也有权利继续回复, 不要咬我, 谢谢.
dengxiayehu 发表于 2012-10-14 12:16 static/image/common/back.gif
回复 5# linux_c_py_php
一口一个误导,论坛,交流,我只能以自己的角度来参与。
页:
[1]
2