[질문] getservbyname() 함수를 사용하여..

getservbyname() 함수를 사용하여, 서비스에 대한 정보를 가져오는 간 단
한 실습용 예제를 짜봤는데요..
포트번호가 이상하게 나오네요.. /etc/services 파일을 확인해봐도 전혀
존재조차 하지 않는 포트번호가 나오니.. 황당합니다.
어디가 틀렸는지, 아니면 그렇게 나오는 이유가 무엇인지 아시는 분 좀 알
려주세요 ^^
=================================================================
#include
#include
#include
extern int errno;
int
main(argc, argv)
int argc;
char *argv[];
{
char *serv_name;
char *prot_name;
struct servent *serv;
if (argc != 3) {
fprintf(stderr, "usage %s [service_name] [protocol_name]
\n", argv[0]);
exit(-1);
}
serv_name = argv[1];
prot_name = argv[2];
if ((serv = getservbyname(serv_name, prot_name)) == NULL) {
perror("getservbyname error ");
exit(-1);
}
printf("official service name %s\n", serv->s_name);
while (*serv->s_aliases) {
printf("alias name %s\n", *serv->s_aliases);
serv->s_aliases++;
}
printf("port number %d\n", serv->s_port);
printf("protocol %s\n", serv->s_proto);
return 0;
}
실행결과
$)./a.out ftp tcp
official service name ftp
port number 5376
protocol tcp
$)./a.out telnet tcp
official service name ftp
port number 5388
protocol tcp
Re: [질문] getservbyname() 함수를 사용하여..
printf("port number %d\n", ntohs(serv->s_port));
syan wrote..
getservbyname() 함수를 사용하여, 서비스에 대한 정보를 가져오는 간 단
한 실습용 예제를 짜봤는데요..
포트번호가 이상하게 나오네요.. /etc/services 파일을 확인해봐도 전 혀
존재조차 하지 않는 포트번호가 나오니.. 황당합니다.
어디가 틀렸는지, 아니면 그렇게 나오는 이유가 무엇인지 아시는 분 좀 알
려주세요 ^^
=================================================================
#include
#include
#include
extern int errno;
int
main(argc, argv)
int argc;
char *argv[];
{
char *serv_name;
char *prot_name;
struct servent *serv;
if (argc != 3) {
fprintf(stderr, "usage %s [service_name] [protocol_name]
\n", argv[0]);
exit(-1);
}
serv_name = argv[1];
prot_name = argv[2];
if ((serv = getservbyname(serv_name, prot_name)) == NULL) {
perror("getservbyname error ");
exit(-1);
}
printf("official service name %s\n", serv- >s_name);
while (*serv->s_aliases) {
printf("alias name %s\n", *serv->s_aliases);
serv->s_aliases++;
}
printf("port number %d\n", serv->s_port);
printf("protocol %s\n", serv->s_proto);
return 0;
}
실행결과
$)./a.out ftp tcp
official service name ftp
port number 5376
protocol tcp
$)./a.out telnet tcp
official service name ftp
port number 5388
protocol tcp
리틀인디안 & 빅인디안
solaris 8, sparc에서는 ntohs()함수를 사용하지 않고도 정상적으로 값이 나옵니다.
리눅스 intel계열에서는 ntohs()함수로 이용하여 host order방식으로 값을 변경해줘야 하네요...
댓글 달기