資源簡(jiǎn)介
linux下ipv6簡(jiǎn)單的tcp/udp socket通信,代碼測(cè)試通過,具體可以參考:
http://blog.csdn.net/zhengxianghdu/article/details/14106167

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?MAXBUF?1024
int?main(int?argc?char?**argv)
{
????int?sockfd?len;
????/*?struct?sockaddr_in?dest;?*/?//?IPv4
????struct?sockaddr_in6?dest;??????//?IPv6
????char?buffer[MAXBUF?+?1];
????if?(argc?!=?3)?{
????????printf
????????????(“參數(shù)格式錯(cuò)誤!正確用法如下:\n\t\t%s?IP地址?端口\n\t比如:\t%s?127.0.0.1?80\n此程序用來從某個(gè)?IP?地址的服務(wù)器某個(gè)端口接收最多?MAXBUF?個(gè)字節(jié)的消息“
?????????????argv[0]?argv[0]);
????????exit(0);
????}
????/*?socket?for?tcp?*/
????/*?if?((sockfd?=?socket(AF_INET?SOCK_STREAM?0))?0)?{?*/?//?IPv4
????if?((sockfd?=?socket(AF_INET6?SOCK_STREAM?0))?0)?{??????//?IPv6
????????perror(“Socket“);
????????exit(errno);
????}
????printf(“socket?created\n“);
????/*?初始化服務(wù)器端(對(duì)方)的地址和端口信息?*/
????bzero(&dest?sizeof(dest));
????/*?dest.sin_family?=?AF_INET;?*/??//?IPv4
????dest.sin6_family?=?AF_INET6;?????//?IPv6
????/*?dest.sin_port?=?htons(atoi(argv[2]));?*/?//?IPv4
????dest.sin6_port?=?htons(atoi(argv[2]));?????//?IPv6
????/*?if?(inet_aton(argv[1]?(struct?in_addr?*)?&dest.sin_addr.s_addr)?==?0)?{?*/?//?IPv4
????if?(?inet_pton(AF_INET6?argv[1]?&dest.sin6_addr)?0?)?{?????????????????//?IPv6
????????perror(argv[1]);
????????exit(errno);
????}
????printf(“address?created\n“);
????/*?連接服務(wù)器?*/
????if?(connect(sockfd?(struct?sockaddr?*)?&dest?sizeof(dest))?!=?0)?{
????????perror(“Connect?“);
????????exit(errno);
????}
????printf(“server?connected\n“);
????/*?接收對(duì)方發(fā)過來的消息,最多接收?MAXBUF?個(gè)字節(jié)?*/
????bzero(buffer?MAXBUF?+?1);
????/*?接收服務(wù)器來的消息?*/
????len?=?recv(sockfd?buffer?MAXBUF?0);
????if?(len?>?0)
????????printf(“接收消息成功:‘%s‘,共%d個(gè)字節(jié)的數(shù)據(jù)\n“
???????????????buffer?len);
????else
????????printf
????????????(“消息接收失??!錯(cuò)誤代碼是%d,錯(cuò)誤信息是‘%s‘\n“
?????????????errno?strerror(errno));
????bzero(buffer?MAXBUF?+?1);
????strcpy(buffer?“這是客戶端發(fā)給服務(wù)器端的消息\n“);
????/*?發(fā)消息給服務(wù)器?*/
????len?=?send(sockfd?buffer?strlen(buffer)?0);
????if?(len?0)
????????printf
????????????(“消息‘%s‘發(fā)送失敗!錯(cuò)誤代碼是%d,錯(cuò)誤信息是‘%s‘\n“
?????????????buffer?errno?strerror(errno));
????else
????????printf(“消息‘%s‘發(fā)送成功,共發(fā)送了%d個(gè)字節(jié)!\n“
???????????????buffer?len);
????/*?關(guān)閉連接?*/
????close(sockfd);
????return?0;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3185??2013-11-04?10:30??ipv6_simple_tcp_udp\tcp-server-ipv6.c
?????文件???????1025??2013-09-30?16:59??ipv6_simple_tcp_udp\udp-client-ipv6.c
?????文件???????1379??2013-11-04?15:09??ipv6_simple_tcp_udp\udp-server-ipv6.c
?????文件???????2726??2013-11-04?10:31??ipv6_simple_tcp_udp\tcp-client-ipv6.c
?????目錄??????????0??2013-09-30?18:23??ipv6_simple_tcp_udp
-----------?---------??----------?-----??----
?????????????????8315????????????????????5
評(píng)論
共有 條評(píng)論