struct protoent 구조, getprotobyname 및 관련 함수
되돌아오는 프로토콜 구조 바늘이 항상 비어 있습니다. 디버깅 정보를 출력했습니다.
src_addr:192.168.5.155,dst_addr:180.153.201.235
ip_p=6-------
protoent is NULL!!!!
src_addr:180.153.201.235,dst_addr:192.168.5.155
ip_p=6-------
protoent is NULL!!!!
src_addr:192.168.5.155,dst_addr:180.153.201.235
ip_p=6-------
protoent is NULL!!!!
src_addr:180.153.201.235,dst_addr:192.168.5.155
ip_p=6-------
protoent is NULL!!!!
인터넷에서 이 함수에 관한 블로그를 찾았는데,http://yadang418.blog.163.com/blog/static/2684365620096101121612/
"이 함수는/etc/protocols에서 조건에 맞는 데이터를 찾아서 구조protoent에서 되돌려준다"는 말이 있는데, 내 장치/etc에 이 파일이 없다는 것을 알았다
linux에 있는 것을 복사해서 들어가서 시험해 보고 실행해 보세요. ok!!
src_addr:192.168.5.152,dst_addr:238.8.8.8
ip_p=17-------
pro_name :udp
udp src_port:60597,dst_port:11111
src_addr:192.168.5.30,dst_addr:255.255.255.255
ip_p=17-------
pro_name :udp
udp src_port:3601,dst_port:3600
src_addr:192.168.5.152,dst_addr:238.8.8.8
ip_p=17-------
pro_name :udp
udp src_port:60597,dst_port:11111
src_addr:192.168.5.152,dst_addr:238.8.8.8
ip_p=17-------
pro_name :udp
udp src_port:60597,dst_port:11111
관련 함수: getprotobyname, getprotoent, setprotoent,endprotoent
머리글 파일: #include
함수 정의:struct protoent *getprotobynumber (int proto)
함수 설명: getprotobynumber () 는 검색하고자 하는 네트워크 프로토콜 번호인 프로토콜 구조를 되돌려줍니다.이 함수는/etc/protocols에서 조건에 맞는 데이터를 찾아서 구조protoent에서 되돌려줍니다.구조protoent 정의는 getprotoent () 참조
반환값: 성공하면protoent 구조의 지장을 되돌려줍니다. 오류가 있거나 일치하는 데이터를 찾지 못하면 NULL 포인터를 되돌려줍니다.
struct protoent 구조
/* Description of data base entry for a single service. */
struct protoent
{
char *p_name; /* Official protocol name. */
char **p_aliases; /* Alias list. */
int p_proto; /* Protocol number. */
};
getprotobyname (): 통신 협정 (protocol) 의 명칭에 따라 이 통신 협정의 기타 자료를 얻습니다.
격식:struct protoent * getprotobyname (const char*name);
참조:name 통신 협정 이름
반환값: 성공 - struct protoent에 대한 포인터
실패 - NULL
설명: 통신협정의 명칭을 이용하여 이 통신협정의 별명, 번호 등 자료를 알 수 있다.
getprotobynumber (): 통신 협정의 번호에 따라 이 통신 협정의 기타 자료를 얻습니다.
격식: struct protoent * getprotobynumber (int number);
참수:number host 배열 방식의 통신 협정 번호
반환값: 성공 - struct protoent에 대한 포인터
실패 - NULL
설명: 통신협정의 번호를 이용하여 이 통신협정의 명칭, 별명 등 자료를 알 수 있다.
============2.6.31 커널=======================
/* Open protocol data base files and mark them as staying open even
after a later search if STAY_OPEN is non-zero.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern void setprotoent (int __stay_open);
/* Close protocol data base files and clear `stay open' flag.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern void endprotoent (void);
/* Get next entry from protocol data base file. Open data base if
necessary.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern struct protoent *getprotoent (void);
/* Return entry from protocol data base for network with NAME.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern struct protoent *getprotobyname (__const char *__name);
/* Return entry from protocol data base which number is PROTO.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern struct protoent *getprotobynumber (int __proto);
=================end========================
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.