내 소켓 튜토리얼 프로그램에 내가 코드에 설정한 포트 대신 "x11-1" 포트가 있다고 netstat에 표시되는 이유는 무엇입니까?

내 소켓 튜토리얼 프로그램에 내가 코드에 설정한 포트 대신 "x11-1" 포트가 있다고 netstat에 표시되는 이유는 무엇입니까?

소켓 프로그래밍을 배우려고 하는데 소켓을 설정하는 다음 기능이 있습니다.

  29 int CreatePassiveSock(char *protocol, char *portstr, int qlen) {                         
  30   int s, port, type, saddrlen;                                                           
  31   char *endptr;                                                                          
  32   struct sockaddr_in saddr;                                                              
  33   port = (int) strtol(portstr, &endptr, 10);                                             
  34   if (*endptr) {                                                                         
  35     printf("\nPlease specify a positive integer for port\n");                            
  36     exit(1);                                                                             
  37   }                                                                                      
  38   saddrlen = sizeof(saddr);                                                              
  39   memset(&saddr, 0, saddrlen);                                                           
  40   saddr.sin_family = AF_INET;                                                            
  41   saddr.sin_addr.s_addr = INADDR_ANY;                                                    
  42   saddr.sin_port = htons(port);                                                          
  43   if (strcmp("tcp", protocol) == 0)                                                      
  44     type = SOCK_STREAM;                                                                  
  45   else if (strcmp("udp", protocol) == 0)                                                 
  46     type = SOCK_DGRAM;                                                                   
  47   else {                                                                                 
  48     printf("Unsupported protocol given");                                                
  49     exit(1);                                                                             
  50   }                                                                                      
  51   if ((s = socket(PF_INET, type, 0)) == -1){                                             
  52     perror("socket call failed");                                                        
  53     exit(1);                                                                             
  54   }                                                                                      
  55   if (bind(s, (struct sockaddr *)&saddr, saddrlen) == -1) {                              
  56     perror("Bind failed");                                                               
  57     exit(1);                                                                             
  58   }                                                                                      
  59   if (type == SOCK_STREAM) {                                                             
  60     if (listen(s, qlen) == -1) {                                                         
  61       perror("listen failed");                                                           
  62       exit(1);                                                                           
  63     }                                                                                    
  64   }                                                                                      
  65   return s;                                                                              
  66 }          

포트 번호로 6001을 사용하여 호출하면 표시되는 줄입니다.netstat -a | head

tcp        0      0 0.0.0.0:x11-1           0.0.0.0:*               LISTEN 

0.0.0.0:x11-1로 표시되는 이유는 무엇입니까? 0.0.0.0:6001을 얻어야 하지 않나요?

중요한 경우에는 PopOS를 실행하는 노트북에서 이 작업을 수행합니다.

답변1

TCP 포트 6001은 식별되므로 x11-1다음 레이블을 사용하여 표시됩니다. 찾은 IP 주소에 해당하는 호스트 이름을 찾는 방법과 /etc/services유사한 netstat방식으로 찾은 포트 번호에 해당하는 서비스 이름을 찾습니다. 바라보다man 5 services설명 /etc/services및 액세스에 사용되는 기능에 대해서는X 클라이언트는 TCP 포트 6000+<표시 번호>에 연결해야 한다는 것을 어떻게 알 수 있습니까?6000+ 범위의 포트 번호 매핑에 대한 지침입니다.

/etc/services시스템에 어떤 서비스가 알려져 있는지 확인할 수 있습니다 .공식 레지스트리는 IANA에서 관리합니다., 당신은 찾을 수 있습니다X11 직업도 있습니다.

netstat포트 번호를 강제로 표시 할 수 있습니다 -n.

관련 정보