반응형
소켓 - 할당된 포트 및 주소를 확인하는 방법
저는 이것을 이해하는 데 어려움을 겪고 있습니다 - 저는 이 가이드를 사용하여 C의 소켓을 사용하고 있습니다 - http://binarii.com/files/papers/c_sockets.txt
다음을 사용하여 IP 및 포트를 자동으로 가져오려고 합니다.
server.sin_port = 0; /* bind() will choose a random port*/
server.sin_addr.s_addr = INADDR_ANY; /* puts server's IP automatically */
...
...
bind(int fd, struct sockaddr *my_addr,int addrlen); // Bind function
바인딩에 성공한 후 실제로 할당된 IP 및 포트를 확인하려면 어떻게 해야 합니까?
서버 소켓인 경우 소켓을 호출하여 수신 중인 포트 번호를 찾아야 합니다.
struct sockaddr_in sin;
socklen_t len = sizeof(sin);
if (getsockname(sock, (struct sockaddr *)&sin, &len) == -1)
perror("getsockname");
else
printf("port number %d\n", ntohs(sin.sin_port));
IP 주소에 대해서는, 만약 당신이INADDR_ANY
그러면 서버 소켓은 시스템의 IP 주소에 대한 연결을 허용할 수 있으며 서버 소켓 자체에는 특정 IP 주소가 없습니다.예를 들어, 시스템에 두 개의 IP 주소가 있는 경우 이 서버 소켓에 각각 다른 로컬 IP 주소를 가진 두 개의 수신 연결이 있을 수 있습니다.사용할 수 있습니다.getsockname()
특정 연결(사용자가 얻을 수 있는 연결)을 위한 소켓에서accept()
해당 연결에서 사용 중인 로컬 IP 주소를 확인합니다.
코드의 설명이 잘못되었습니다.INADDR_ANY
서버의 IP를 자동으로 입력하지 않습니다.Mark4o의 답변에 설명된 이유로 기본적으로 0.0.0을 입력합니다.
언급URL : https://stackoverflow.com/questions/4046616/sockets-how-to-find-out-what-port-and-address-im-assigned
반응형
'programing' 카테고리의 다른 글
Python은 멀티스레딩을 지원합니까?실행 시간을 단축할 수 있습니까? (0) | 2023.07.27 |
---|---|
PowerShell Get-Date 내부 문자열 형식 지정 (0) | 2023.07.27 |
SSL 오류("SSL 모듈을 사용할 수 없기 때문에 HTTPS URL에 연결할 수 없습니다.")로 인해 발생합니다. (0) | 2023.07.27 |
C# 및 ODP.NET에서 패키지의 함수를 호출하기 위한 코드 (0) | 2023.07.27 |
목표 C HTML 이스케이프/에스케이프 해제 (0) | 2023.07.27 |