NetAddress를 추가함.

#pragma once

class NetAddress
{
public:
	NetAddress(string ip, int port);
	NetAddress(const NetAddress& addr);
	~NetAddress();

	const SOCKADDR_IN&	GetAddr() { return _sockAddr; }
	string				GetIp();
	int16				GetPort() { return ::ntohs(_sockAddr.sin_port); }
private:
	SOCKADDR_IN _sockAddr;
};
#include "pch.h"
#include "NetAddress.h"
#include <ws2tcpip.h>

NetAddress::NetAddress(string ip, int port)
{
	::memset(&_sockAddr, 0, sizeof(_sockAddr));
	_sockAddr.sin_family = AF_INET;
	::inet_pton(AF_INET, ip.c_str(), &_sockAddr.sin_addr);
	_sockAddr.sin_port = ::htons(port);
}

NetAddress::NetAddress(const NetAddress& addr)
{
	_sockAddr = addr._sockAddr;
}

NetAddress::~NetAddress()
{
}

string NetAddress::GetIp()
{
	char buff[INET_ADDRSTRLEN];
	return ::inet_ntop(AF_INET, &_sockAddr.sin_addr, buff, sizeof(buff));
}

 

 

inet_pton

ws2tcpip.h 에 있다

"127.0.0.1" 과 같이 문자열로 된 ip주소를 네트워크가 이해할 수 있는 형태로 바꿔주는 함수.

INT WSAAPI inet_pton(
  [in]  INT   Family,
  [in]  PCSTR pszAddrString,
  [out] PVOID pAddrBuf
);
  • 성공하면 1 반환하고 pAddrBuf에 이진 숫자 ip주소를 넣어준다.
  • 실패 시 -1 반환. 오류 정보는 WSAGetLastError로 확인 가능.

inet_ntop

ws2tcpip.h 에 있다

반대로 네트워크가 이해할 수 있는 형태의 ip주소를 사람이 이해할 수 있는 형태로 바꿔주는 함수.

ip주소 문자열이 들어갈 버퍼를 준비해서 넣어줘야한다.

PCSTR WSAAPI inet_ntop(
  [in]  INT        Family,
  [in]  const VOID *pAddr,
  [out] PSTR       pStringBuf,
  [in]  size_t     StringBufSize
);
  • 성공하면 3번째 인자로 넣은 포인터가 그대로 반환된다.
  • 실패하면 NULL이 반환된다. 오류 정보는 WSAGetLastError로 확인 가능.

 

현재까지의 버전.

 

Fix: NetAddress 정상화 · Dodontak/Project_Island_GameServer@bcc28f1

- NetAddress GameServer 에서 사용해볼 수 있도록 수정함.

github.com

 

'프로젝트 > Project_Island' 카테고리의 다른 글

28. Send, Broadcast 구현  (0) 2026.03.29
27. IOCP accept, recv까지 구현  (0) 2026.03.28
25. SocketUtils  (0) 2026.03.26
24. 환경설정  (0) 2026.03.25
23. 게임서버 만들기의 시작  (0) 2026.03.24

+ Recent posts