win32 ipv6 sendto recvfrom
1. sendto
????? 在windows xp下進行ipv6的udp網絡通信時,目標地址應該像如下方式構造
?????? addrinfo hins, *res;
?????? memset(&hins, 0, sizeof(hins));
?????? hins.ai_family = AF_INET6;
?????? hins.ai_socktype = SOCK_DGRAM;
?????? hins.ai_protocal = IPPROTO_UDP;
?????? hins.ai_flags = AI_NUERICHOST;
?????? getaddrinof("128位ipv6目標地址 + %n", "端口號", &hins, &res);
?????? sendto(m_socket, buf, sizeof(buf), 0, res->ai_addr, res->ai_addrlen);
?????? linux上是否需要這種方式,沒有實驗。
?????? 需要注意的是,在win32上的網卡的地址后面都有一個%號和一個數字,這個應該是這個網卡的編號,因此,在sendto中的目標地址后面要帶上本機網卡的編號,應該是指示系統從制定的網卡發送數據,在linux上沒有這個%。
2. recvfrom
???? 在win32上面,用recvfrom接收UDP數據時,當有數據可讀時,recvfrom報錯,返回10014,估計也是地址的問題,貌似在win32上,ipv6的地址結構只能用getaddrinfo函數來構造,因為在recvfrom的第5個參數可以得到對端的地址。因此我們用recv函數即可。在linux上還沒有驗證。
總結
以上是生活随笔為你收集整理的win32 ipv6 sendto recvfrom的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡临时额度有效期有多久
- 下一篇: 通货膨胀与通货紧缩的区别,哪个后果更严重