在下述基础上修改 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.*