winsock 사용 내 서버 응용 프로그램이 특정 (예 : 192.168.0.0/24
) 서브 네트워크의 연결 만 허용하도록합니다.특정 서브넷의 연결 만 허용
나는 두 가지 옵션을 생각하고 :
확인 클라이언트의 주소 때마다 나는
accept
연결이.while (true) { SOCKET clientSocket = accept(serverSocket, (SOCKADDR *)&clientAddress, &addressLenght); if (clientSocket == INVALID_SOCKET || clientAddress.sin_addr.S_un.S_un_b.s_b1 != 192 || clientAddress.sin_addr.S_un.S_un_b.s_b2 != 168 || clientAddress.sin_addr.S_un.S_un_b.s_b3 != 0) { closesocket(clientSocket); continue; } ... }
네트워크를 해당 로컬 주소를 찾아
SOCKADDR_IN serverAddress; serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(13666); serverAddress.sin_addr.S_un.S_addr = inet_addr("192.168.0.1"); result = bind(serverSocket, (SOCKADDR *)&serverAddress, sizeof(serverAddress));
bind
내가 다른 어떤 옵션이 있습니까에 name
인수로 사용?
P .: 나는 더 나은 해결책이 있다고 들었다. 그러나 나는 그것을 알아낼 수 없다.
주소가 실제로 구성 파일에서로드되기를 원합니다. 그렇지 않으면 네트워크를 재구성하여 번호를 다시 매길 필요가있을 때마다 네트워크 관리자가 * "사랑"합니다 *! –
@EmilioGaravaglia 예, 물론입니다. 위 코드는 예제 일뿐입니다. – Igonato
"더 좋은 해결책이 있다는 말을 들었습니다."-하지만 적어도 조금은 설명하기가 쉽지 않습니까? –