一个IPv6通讯的例子

/* sudochen@163.com
 *
 *
 */
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/wait.h>
#include <arpa/inet.h>

#define LOCAL_IPV6_ADDR "2222:250:3001:1::1"
#define IPV6_PORT   8888
char msg[] = {"hello world\0"};

int main(int argc, char **argv)
{
    int fd_client, fd_server;
    int ret;
    int size;

    struct sockaddr_in6 server_addr,client_addr;

    fd_client = socket(AF_INET6,SOCK_DGRAM,0);
    if (fd_client < 0) {
        printf("socket create for ipv6 failed\n");
        return -1;
    }

    memset(&server_addr,0,sizeof(server_addr));
    server_addr.sin6_family = AF_INET6;
    server_addr.sin6_port = htons(IPV6_PORT);
    inet_pton(AF_INET6,LOCAL_IPV6_ADDR,server_addr.sin6_addr.__in6_u.__u6_addr8);
    ret = sendto(fd_client,msg,strlen(msg),0,
                 (struct sockaddr*)(&server_addr),
                 sizeof(server_addr));
    if (ret < 0) {
        printf("socket send for ipv6 failed\n");
        close(fd_client);
        return -1;
    }

    close(fd_client);
}
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <linux/if_ether.h>
#include <net/if.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <netdb.h>
#include <stdlib.h>
#include <assert.h>
#include <netpacket/packet.h>
#define IPV6_PORT   8888
char msg[] = {"hello world\0"};

int main(int argc, char **argv)
{
    int fd_client, fd_server;
    int ret;
    int size;

    struct ifreq ifr;
    struct sockaddr_in6 server_addr,client_addr;
    memset(msg,0,sizeof(msg))   ;
    int i = 0;

    fd_client = socket(AF_INET6,SOCK_DGRAM,0);
    if (fd_client < 0) {
        printf("socket create for ipv6 failed\n");
        return -1;
    }

    memset(&server_addr,0,sizeof(server_addr));
    server_addr.sin6_family = AF_INET6;
    server_addr.sin6_port = htons(IPV6_PORT);
    inet_pton(AF_INET6,"2222:250:3001:1::1",server_addr.sin6_addr.__in6_u.__u6_addr8);
    printf("IP :");
    for (i=0;i<16;i++){
        printf("%02x ",server_addr.sin6_addr.__in6_u.__u6_addr8[i]);
    }
    printf("\n");

    ret = bind(fd_client,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr_in6));
    if (ret < 0) {
        perror("bind error\n");
    }
    size = sizeof(client_addr);
    ret = recvfrom(fd_client,msg,sizeof(msg),0,(struct sockaddr*)(&client_addr),&size);
    if (ret < 0) {
        printf("resvfrom error\n");
    }
    printf("%s\n",msg);
    close(fd_client);
    return 0;

    ret = 

    close(fd_client);

}

ipv6例子的更多相关文章

  1. IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类

    一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...

  2. 第二章:Internet地址结构

    引言 本章主要介绍了: 如何为Internet中的设备分配IP地址. 有助于理由可扩展性的地址结构分配方式. 特殊用途的地址. 表示IP地址 IPv4地址 长32位,采用点分四组或点分十进制来表示. ...

  3. 在Linux下禁用IPv6的方法小结

    在Linux下禁用IPv6的方法小结--http://www.jb51.net/LINUXjishu/335724.html 这篇文章主要介绍了在Linux下禁用IPv6的方法小结,禁用IPv6的操作 ...

  4. Openwrt笔记-IPv6与启动顺序

    之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接:但实际使用时经常出现莫名奇妙的问题.IPv6状态要么是无法连接网络,要么是无法连接Internet:经过研究,发现大概是自启动项 ...

  5. coco2dx服务器简单例子

    实现的单个socket例子,了解socket原理. 先创建一个win32的项目(命令行的),作为服务端 // SocketServer.cpp : 定义控制台应用程序的入口点.// #include ...

  6. linux 下使rdate命令支持ipv6 ntp server 同步时间

    如果使用linux 下,busybox自带的rdate命令 去ipv6 的ntp server 同步时间的话,会提示invalid argument :无效参数. 那么现在下载rdate的源码并对其进 ...

  7. IPv6 相关的工作简介

    这里说明下,仅仅是IPv6在开发板上的相关的工作简介,没有很详细,都是自己一边积累,一边实践的.能帮助其他人最好,也算是给自己做个备忘录. 一.首先说下DHCPv6相关的.这里我使用的是DHCP6s. ...

  8. tcpprep 对IPV6的支持

    在采用tcpreplay对包实施回放前,需要对包执行预处理,tcpprep就是完成这个任务的.tcpprep要做的处理就是生成一个cache文件,根据tcpprep wiki的介绍http://tcp ...

  9. google学术反向代理及IPV6免流量上网【教育网BUPT】

    google反向代理 google https://awk.so/ 学术反向代理 https://awk.so/scholar/?hl=zh-CN 2015年1.1号开始流量计费,2元/G 无VPS用 ...

随机推荐

  1. JavaScript 常用函数总结

    javascript函数:  ·常规函数  ·数组函数  ·日期函数  ·数学函数  ·字符串函数 .cookie函数 1.常规函数 javascript常规函数包括以下9个函数:  (1)alert ...

  2. margin 碰到过的重叠问题

    双倍margin 稍微记录一下,因为常忘 float + margin,实际边距会变成设置值的双倍. 解决办法是 将元素设为 display:inline 最好要了解 IE的 haslayout 问题 ...

  3. 20145226夏艺华 《Java程序设计》第0周学习总结

    关于师生关系: 学生和老师之间我觉得关系时多元化的,不能拘泥于单独的一种关系:灌输与被灌输,教授与被教授--我认为,在不同的课程阶段,师生之间的关系都可以发生变化.前期的老师更像是一个指路的人,而在入 ...

  4. pdoner version 0.1.0 release

    Optional functional pack prepared for fast php framework. Source:https://github.com/farwish/pdoner L ...

  5. IOS git 的安装

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/instal ...

  6. 解决yum报错集

    yum -y install gcc gcc-c++ makeError:  Multilib version problems found. This often means that the ro ...

  7. [WPF]Slider控件常用方法

    WPF的Slider控件继承自RangeBase类型,同继承自RangeBase的控件还有ProgressBar和ScrollBar,这类控件都是在一定数值范围内表示一个值的用途. 首先注意而Rang ...

  8. 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    RTP           参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...

  9. rspec中的shared_examples与shared_context有什么不同

    What is the real difference between shared_examples and shared_context ? My observations : I can tes ...

  10. fastjson自动转化参数报错

    开发环境:spring-mvc4.1.7.fastjson1.2.7 问题描述:系统采用的前后端完全分离方式,前端页面使用ajax调用后台服务时,想用fastjson自动转化请求参数对象. // 前端 ...