- 主题:穿梭bbsnet.c如何实现IPv6域名解析及兼容IPv4
在下述基础上修改 bbsnet.c 程序
// Telnet for FB3.0, zhch.bbs@bbs.nju.edu.cn, NJU Lily BBS, Dec 12, 2000
目前已实现了纯 IPv6 地址的穿梭,但是:
一、无法解析出 IPv6 的域名为地址。二、无法访问 IPv4 的地址。
问,如何兼容 IPv4 并实现 IPv6 下的域名解析?
附已有代码
void telnet(char *hostname, char *server,int port)
{
int fd;
struct sockaddr_in6 blah;
struct hostent *hp;
fd_set readfds;
struct timeval tv;
int result;
char buf[2048];
signal(SIGALRM, break_check);
alarm(1);
bzero((char *)&blah,sizeof(blah));
blah.sin6_family=AF_INET6;
blah.sin6_port=htons(port);
printf("正连接 %s,请稍候 ... \r\n", server);
fflush(stdout);
sleep(10);
fd = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
hp = my_gethostbyname(server, AF_INET6);
if (inet_pton(AF_INET6, hp->h_addr, &blah.sin6_addr) < 0) {
return;
}
if(connect(fd,(struct sockaddr *)&blah, sizeof(struct sockaddr_in6))<0) {
return;
}
signal(SIGALRM, SIG_IGN);
snprintf(buf, 2048, "%s (%s)", hostname, server);
bbsnetlog(buf);
printf("已连上主机,按 \'Ctrl+]\' 快速退出。\r\n\r\n");
fflush(stdout);
...
}
--
FROM 125.113.158.*
【 在 moqi88 (毅路同行·远方的精彩) 的大作中提到: 】
: 在下述基础上修改 bbsnet.c 程序
: // Telnet for FB3.0, zhch.bbs@bbs.nju.edu.cn, NJU Lily BBS, Dec 12, 2000
: 目前已实现了纯 IPv6 地址的穿梭,但是:
: 一、无法解析出 IPv6 的域名为地址。二、无法访问 IPv4 的地址。
: 问,如何兼容 IPv4 并实现 IPv6 下的域名解析?
查 AAAA 记录啊,IPv6 DNS 是这样的
: 附已有代码
: void telnet(char *hostname, char *server,int port)
: {
: int fd;
: struct sockaddr_in6 blah;
: struct hostent *hp;
: fd_set readfds;
: struct timeval tv;
: int result;
: char buf[2048];
: signal(SIGALRM, break_check);
: alarm(1);
: bzero((char *)&blah,sizeof(blah));
: blah.sin6_family=AF_INET6;
: blah.sin6_port=htons(port);
: printf("正连接 %s,请稍候 ... \r\n", server);
: fflush(stdout);
: sleep(10);
: fd = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
: hp = my_gethostbyname(server, AF_INET6);
: if (inet_pton(AF_INET6, hp->h_addr, &blah.sin6_addr) < 0) {
: return;
: }
: if(connect(fd,(struct sockaddr *)&blah, sizeof(struct sockaddr_in6))<0) {
: return;
: }
: signal(SIGALRM, SIG_IGN);
: snprintf(buf, 2048, "%s (%s)", hostname, server);
: bbsnetlog(buf);
: printf("已连上主机,按 \'Ctrl+]\' 快速退出。\r\n\r\n");
: fflush(stdout);
: ...
: }
--
FROM 123.116.102.*
看UNPv1 3rd ed, 11.12节的tcp_connect函数,注意那里的参数含义不一样。
【 在 moqi88 (毅路同行·远方的精彩) 的大作中提到: 】
: 在下述基础上修改 bbsnet.c 程序
: // Telnet for FB3.0, zhch.bbs@bbs.nju.edu.cn, NJU Lily BBS, Dec 12, 2000
: 目前已实现了纯 IPv6 地址的穿梭,但是:
: ...................
--
修改:covariant FROM 218.22.21.*
FROM 218.22.21.*
神书呀,阅读中~
【 在 covariant (协变) 的大作中提到: 】
: 看UNPv1 3rd ed, 11.12节的tcp_connect函数,注意那里的参数含义不一样。
--
FROM 125.113.158.*
已经根据其中的样例,改好了~
目前已经能支持IPv6和v4的DNS解析和访问了。
不过还存在一个BUG,就是连接部分IPv6站点时,进站画面显示不全,只能显示下半部分的
最后两三行。不知道是什么原因。
【 在 covariant (协变) 的大作中提到: 】
: 看UNPv1 3rd ed, 11.12节的tcp_connect函数,注意那里的参数含义不一样。
--
FROM 125.113.158.*
不像这一段的问题。
【 在 moqi88 (毅路同行·远方的精彩) 的大作中提到: 】
: 已经根据其中的样例,改好了~
: 目前已经能支持IPv6和v4的DNS解析和访问了。
: 不过还存在一个BUG,就是连接部分IPv6站点时,进站画面显示不全,只能显示下半部分的
: ...................
--
FROM 218.22.21.*
【 在 moqi88 (毅路同行·远方的精彩) 的大作中提到: 】
: 已经根据其中的样例,改好了~
: 目前已经能支持IPv6和v4的DNS解析和访问了。
: 不过还存在一个BUG,就是连接部分IPv6站点时,进站画面显示不全,只能显示下半部分的
打点log看看吧,不像这段的问题
: ...................
--
FROM 123.116.102.*