概述
下面是一个udp ipv6 demo, 包括创建ipv6套接字、绑定地址和发送数据等。
首先先在linux上配置一个本地站点地址,然后使用这个地址发送。
-
//linux上添加IPv6地址命令
-
sudo ip
-6 addr add fd11::
100/
64 dev eth0
-
/*
-
* Description : IPv6 UDP套接字编程示例
-
* Author : mason
-
* Date : 201808
-
*/
-
#include <sys/types.h>
-
#include <sys/socket.h>
-
#include <arpa/inet.h>
-
#include <errno.h>
-
#include <string.h>
-
#include <stdio.h>
-
-
/* IPv6压缩格式地址 */
-
static
char src[] =
"fd11::100";
-
static
char dst[] =
"fd11::200";
-
-
void main()
-
{
-
int udp6_socket, ret, ttl, on, addr_len;
-
struct sockaddr_in6 saddr;
-
struct sockaddr_in6 daddr;
-
char buffer[] =
"Hello World6";
-
-
/* 设置IPv6地址,这个函数支持三种IPv6地址格式,包括首选格式、压缩格式和映射格式*/
-
if ((inet_pton(AF_INET6, (
char *)&src[
0], &saddr.sin6_addr)) !=
1)
-
{
-
printf(
"invalid ipv6 addr rn");
-
return ;
-
}
-
-
if ((inet_pton(AF_INET6, (
char *)&dst[
0], &daddr.sin6_addr)) !=
1)
-
{
-
printf(
"invalid ipv6 addr rn");
-
return ;
-
}
-
-
addr_len =
sizeof(struct sockaddr_in6);
-
saddr.sin6_family = AF_INET6;
-
saddr.sin6_port = htons(
30000);
-
-
daddr.sin6_family = AF_INET6;
-
daddr.sin6_port = htons(
40000);
-
-
/* 创建IPv6套接字,IPv6使用AF_INET6 */
-
udp6_socket = socket(AF_INET6, SOCK_DGRAM,
0);
-
if (udp6_socket ==
-1)
-
{
-
printf(
"create udp6_socket failrn");
-
return;
-
}
-
-
/* 绑定地址 */
-
if (bind(udp6_socket, (struct sockaddr *)&saddr, addr_len))
-
{
-
printf(
"udp6 bind addr fail, err : %drn", errno);
-
close(udp6_socket);
-
return;
-
}
-
-
/* 发送 */
-
ret = sendto(udp6_socket, &buffer[
0],
sizeof(buffer),
0, (struct sockaddr *)&daddr, addr_len);
-
if (ret >
0)
-
{
-
printf(
"udp6 send %d bytes success rn", ret);
-
}
-
-
/* 关闭套接字 */
-
close(udp6_socket);
-
return;
-
}
Makefile:
-
udp6:
-
$(CC) -o udp6 udp6_demo.c
-
clean:
-
@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套接字编程示例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复