我是靠谱客的博主 陶醉火龙果,最近开发中收集的这篇文章主要介绍Linux IPv6 UDP套接字编程示例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面是一个udp ipv6 demo, 包括创建ipv6套接字、绑定地址和发送数据等。

首先先在linux上配置一个本地站点地址,然后使用这个地址发送。


 
 
  1. //linux上添加IPv6地址命令
  2. sudo ip -6 addr add fd11:: 100/ 64 dev eth0

 
 
  1. /*
  2. * Description : IPv6 UDP套接字编程示例
  3. * Author : mason
  4. * Date : 201808
  5. */
  6. #include <sys/types.h>
  7. #include <sys/socket.h>
  8. #include <arpa/inet.h>
  9. #include <errno.h>
  10. #include <string.h>
  11. #include <stdio.h>
  12. /* IPv6压缩格式地址 */
  13. static char src[] = "fd11::100";
  14. static char dst[] = "fd11::200";
  15. void main()
  16. {
  17. int udp6_socket, ret, ttl, on, addr_len;
  18. struct sockaddr_in6 saddr;
  19. struct sockaddr_in6 daddr;
  20. char buffer[] = "Hello World6";
  21. /* 设置IPv6地址,这个函数支持三种IPv6地址格式,包括首选格式、压缩格式和映射格式*/
  22. if ((inet_pton(AF_INET6, ( char *)&src[ 0], &saddr.sin6_addr)) != 1)
  23. {
  24. printf( "invalid ipv6 addr rn");
  25. return ;
  26. }
  27. if ((inet_pton(AF_INET6, ( char *)&dst[ 0], &daddr.sin6_addr)) != 1)
  28. {
  29. printf( "invalid ipv6 addr rn");
  30. return ;
  31. }
  32. addr_len = sizeof(struct sockaddr_in6);
  33. saddr.sin6_family = AF_INET6;
  34. saddr.sin6_port = htons( 30000);
  35. daddr.sin6_family = AF_INET6;
  36. daddr.sin6_port = htons( 40000);
  37. /* 创建IPv6套接字,IPv6使用AF_INET6 */
  38. udp6_socket = socket(AF_INET6, SOCK_DGRAM, 0);
  39. if (udp6_socket == -1)
  40. {
  41. printf( "create udp6_socket failrn");
  42. return;
  43. }
  44. /* 绑定地址 */
  45. if (bind(udp6_socket, (struct sockaddr *)&saddr, addr_len))
  46. {
  47. printf( "udp6 bind addr fail, err : %drn", errno);
  48. close(udp6_socket);
  49. return;
  50. }
  51. /* 发送 */
  52. ret = sendto(udp6_socket, &buffer[ 0], sizeof(buffer), 0, (struct sockaddr *)&daddr, addr_len);
  53. if (ret > 0)
  54. {
  55. printf( "udp6 send %d bytes success rn", ret);
  56. }
  57. /* 关闭套接字 */
  58. close(udp6_socket);
  59. return;
  60. }

Makefile:


 
 
  1. udp6:
  2. $(CC) -o udp6 udp6_demo.c
  3. clean:
  4. @rm -rf *.o udp6

 

参考资料:

1. linux error code 含义 https://blog.csdn.net/wangcg123/article/details/51218408 

2. man sendto https://linux.die.net/man/2/sendto

3. man socket https://linux.die.net/man/7/socket

4 linux 下ping6 https://blog.csdn.net/hansel/article/details/5304103

最后

以上就是陶醉火龙果为你收集整理的Linux IPv6 UDP套接字编程示例的全部内容,希望文章能够帮你解决Linux IPv6 UDP套接字编程示例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部