[windows][socket] inet_ntoa, inet_addr error C4996: 수정

inet_ntoa, inet_addr error C4996:

1>E:\xxx.cpp(124,1): error C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or 
					define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
1>E:\bbb.cpp(206,33): error C4996: 'inet_addr': Use inet_pton() or InetPton() instead or 
					define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings

해결방법

_WINSOCK_DEPRECATED_NO_WARNINGS define

deprecated 된 코드사용 을 에러나 경고 없이 가능하게 한다

inet_ntoa > inet_ntop/InetNtop 그리고 inet_addr > inet_pton/InotPton 함수로 변경

더 이상 사용하지 말라고 하는 함수를 신규 함수로 변경한다

기존

// inet_ntoa
auto ipAddr = inet_ntoa(addr.sin_addr);
//inet_addr
auto addr = inet_addr(ipAddress);

변경

#include <WS2tcpip.h>

// inet_ntoa
char clientIP[20] = { 0, };
if (inet_ntop(AF_INET, &addr.sin_addr, clientIP, sizeof(clientIP)) == NULL) {
  // 예외처리
}
//inet_addr
ULONG addr;
auto result = inet_pton(AF_INET, ipAddress, &addr);
if (result != SOCKET_ERROR) { // -1
  m_SockAddr.sin_addr.s_addr = addr;
}

헤더 추가 후 위 코드와 같이 수정 시 정상 컴파일 되는 것을 확인할 수 있다
이외에도 sdl 검사를 제거하는 방법도 있지만 가급적이면 컴파일러가 사용하지 deprecate 하는 경우 코드를 변경해주도록 하자


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다