IPV6网络编程.pdf

上传人:索**** 文档编号:76242972 上传时间:2023-03-08 格式:PDF 页数:6 大小:11.16KB
返回 下载 相关 举报
IPV6网络编程.pdf_第1页
第1页 / 共6页
IPV6网络编程.pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《IPV6网络编程.pdf》由会员分享,可在线阅读,更多相关《IPV6网络编程.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、#include#include#include#include#include#include#include#include#include#include#define MAXBUF 1024/*关于本文档*filename:ipv6-server.c*purpose:演示最基本的 IPv6 网络编程步骤,开启服务接收客户端连接并和客户端通信,互相收发消息*wrote by:zhoulifa()周立发(http:/)Linux 爱好者 Linux知识传播者 SOHO 族 开发者 最擅长 C语言*date time:2007-01-29 13:06*Note:任何人可以任意复制代码并运用这

2、些文档,当然包括你的商业用途*但请遵循 GPL*Thanks to:Google*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力*科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!*/int main(int argc,char*argv)int sockfd,new_fd;socklen_t len;/*struct sockaddr_in my_addr,their_addr;*/IPv4 struct sockaddr_in6 my_addr,their_addr;/IPv6 unsigned int myport,lisnum;char bufMAXBUF+1;if(a

3、rgv1)myport=atoi(argv1);else myport=7838;if(argv2)lisnum=atoi(argv2);else lisnum=2;/*if(sockfd=socket(PF_INET,SOCK_STREAM,0)=-1)*/IPv4 if(sockfd=socket(PF_INET6,SOCK_STREAM,0)=-1)/IPv6 perror(socket);exit(1);else printf(socket createdn);bzero(&my_addr,sizeof(my_addr);/*my_addr.sin_family=PF_INET;*/I

4、Pv4 my_addr.sin6_family=PF_INET6;/IPv6 /*my_addr.sin_port=htons(myport);*/IPv4 my_addr.sin6_port=htons(myport);/IPv6 if(argv3)/*my_addr.sin_addr.s_addr=inet_addr(argv3);*/IPv4 inet_pton(AF_INET6,argv3,&my_addr.sin6_addr);/IPv6 else /*my_addr.sin_addr.s_addr=INADDR_ANY;*/IPv4 my_addr.sin6_addr=in6add

5、r_any;/IPv6 /*if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr)*/IPv4 if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr_in6)/IPv6 =-1)perror(bind);exit(1);else printf(bindedn);if(listen(sockfd,lisnum)=-1)perror(listen);exit(1);else printf(begin listenn);while(1)len=siz

6、eof(struct sockaddr);if(new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&len)=-1)perror(accept);exit(errno);else printf(server:got connection from%s,port%d,socket%dn,/*inet_ntoa(their_addr.sin_addr),*/IPv4 inet_ntop(AF_INET6,&their_addr.sin6_addr,buf,sizeof(buf),/IPv6 /*ntohs(their_addr.sin_port)

7、,new_fd);*/IPv4 their_addr.sin6_port,new_fd);/IPv6 /*开始处理每个新连接上的数据收发*/bzero(buf,MAXBUF+1);strcpy(buf,这是在连接建立成功后向客户端发送的第一个消息n 只能向new_fd 这个用 accept 函数新建立的 socket 发消息,不能向 sockfd 这个监听socket 发送消息,监听 socket 不能用来接收或发送消息n);/*发消息给客户端 */len=send(new_fd,buf,strlen(buf),0);if(len 0)printf(接收消息成功:%s,共%d个字节的数据 n,

8、buf,len);else printf (消息接收失败!错误代码是%d,错误信息是%sn,errno,strerror(errno);/*处理每个新连接上的数据收发结束*/close(sockfd);return 0;每行程序后面的“/IPv4”表示这行代码是在IPv4 网络里用的而“/IPv6”表示这行代码是在IPv6 网络里用的,比较一下,会很容易看到差别的。客户端源代码如下:#include#include#include#include#include#include#include#include#include#define MAXBUF 1024/*关于本文档*filename

9、:ipv6-client.c*purpose:演示最基本的 IPv6 网络编程步骤,这是个客户端程序,与服务器互相收发消息*wrote by:zhoulifa()周立发(http:/)Linux 爱好者 Linux知识传播者 SOHO 族 开发者 最擅长 C语言*date time:2007-01-29 12:56*Note:任何人可以任意复制代码并运用这些文档,当然包括你的商业用途*但请遵循 GPL*Thanks to:Google*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力*科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!*/int main(int argc,cha

10、r*argv)int sockfd,len;/*struct sockaddr_in dest;*/IPv4 struct sockaddr_in6 dest;/IPv6 char bufferMAXBUF+1;if(argc!=3)printf (参数格式错误!正确用法如下:ntt%s IP地址 端口nt比如:t%s 127.0.0.1 80n此程序用来从某个 IP 地址的服务器某个端口接收最多 MAXBUF 个字节的消息,argv0,argv0);exit(0);/*创建一个 socket 用于 tcp 通信*/*if(sockfd=socket(AF_INET,SOCK_STREAM,0

11、)0)*/IPv4 if(sockfd=socket(AF_INET6,SOCK_STREAM,0)0)/IPv6 perror(Socket);exit(errno);printf(socket createdn);/*初始化服务器端(对方)的地址和端口信息*/bzero(&dest,sizeof(dest)/*dest.sin_family=AF_INET;*/IPv4 dest.sin6_family=AF_INET6;/IPv6 /*dest.sin_port=htons(atoi(argv2);*/IPv4 dest.sin6_port=htons(atoi(argv2);/IPv6

12、 /*if(inet_aton(argv1,(struct in_addr*)&dest.sin_addr.s_addr)=0)*/IPv4 if(inet_pton(AF_INET6,argv1,&dest.sin6_addr)0)printf(接收消息成功:%s,共%d个字节的数据 n,buffer,len);else print (消息接收失败!错误代码是%d,错误信息是%sn errno,strerror(errno);bzero(buffer,MAXBUF+1);strcpy(buffer,这是客户端发给服务器端的消息n);/*发消息给服务器 */len=send(sockfd,bu

13、ffer,strlen(buffer),0);if(len 0)printf (消息%s 发送失败!错误代码是%d,错误信息是%sn,buffer,errno,strerror(errno);else printf(消息%s 发送成功,共发送了%d个字节!n,buffer,len)/*关闭连接 */close(sockfd);return 0;编译程序用下列命令:引用:gcc-Wall ipv6-server.c-o ipv6server gcc-Wall ipv6-client.c-o ipv6client 你自己的主机有IPv6 地址吗?很多人会问,输入ifconfig命令看一下吧:引用:

14、eth0 链路封装:以太网硬件地址 00:14:2A:6D:5B:A5 inet 地址:192.168.0.167 广播:192.168.0.255 掩码:255.255.255.0 inet6 地址:fe80:214:2aff:fe6d:5ba5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:30507 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:26797 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:1000 接收字节:31461154(30.0 MiB)发送字节:447281

15、0(4.2 MiB)中断:185 基本地址:0 xe400 lo 链路封装:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址:1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 跃点数:1 接收数据包:13 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:13 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:1178(1.1 KiB)发送字节:1178(1.1 KiB)看到“inet6地址:”这两行了吗?后面就是你的IPv6 地址关于 IPv6 地址类型,可以参考一下 url=http:/ 地址类型”启动服务:./ipv6server 7838 1 或者加上IP 地址启动服务:./ipv6server 7838 1 fe80:214:2aff:fe6d:5ba5/64 启动客户端测试一下:./ipv6client:1/128 7838 或./ipv6client fe80:214:2aff:fe6d:5ba5/6 7838

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁