JNetLibray
로딩중...
검색중...
일치하는것 없음
WinSocketAPI.h 파일 참조
#include <WinSock2.h>
#include <MSWSock.h>
#include <WS2tcpip.h>
#include "CommTypes.h"

이 파일의 소스 코드 페이지로 가기

매크로

#define IN   /* marks input param */
 
#define OUT   /* marks output param */
 
#define INOUT   /* marks input+output param */
 

함수

int InitWindowSocketLib (LPWSADATA)
 
SOCKET CreateWindowSocket_IPv4 (bool isTCP, OUT int *errCode=NULL)
 
SOCKADDR_IN CreateDestinationADDR (const char *destIP, uint16 destPort)
 
SOCKADDR_IN CreateDestinationADDR (IN_ADDR destInAddr, uint16 destPort)
 
SOCKADDR_IN CreateDestinationADDR_LoopBack (uint16 destPort)
 
SOCKADDR_IN CreateDestinationADDR_byDomain (WCHAR *destDomain, uint16 destPort)
 
bool ConnectToDestination (const SOCKET &sock, const SOCKADDR_IN &destAddr, OUT int *errCode=NULL)
 
SOCKADDR_IN CreateServerADDR (const char *serverIp, uint16 port)
 
SOCKADDR_IN CreateServerADDR_ANY (uint16 port)
 
SOCKADDR_IN CreateServerADDR_LoopBack (uint16 port)
 
bool BindSocket (SOCKET &sock, SOCKADDR_IN &serverAddr, OUT int *errCode=NULL)
 
bool ListenSocket (SOCKET &sock, int backlog, OUT int *errCode=NULL)
 
SOCKET AcceptSocket (SOCKET &sock, SOCKADDR_IN &clientAddr, OUT int *errCode=NULL)
 
void IN_ADDR_TO_STRING (const IN_ADDR &inAddr, char ipStr[INET_ADDRSTRLEN])
 
bool DomainAddrToIP (WCHAR *szDomain, IN_ADDR *pAddr)
 

매크로 문서화

◆ IN

#define IN   /* marks input param */

◆ OUT

#define OUT   /* marks output param */

◆ INOUT

#define INOUT   /* marks input+output param */

함수 문서화

◆ InitWindowSocketLib()

int InitWindowSocketLib ( LPWSADATA pWsaData)
4{
5 // winsock.h
6 // Windows 소켓 함수들을 호출하기 전 첫 번째로 호출되어야 하는 초기화 함수
7 // (ws2_32 라이브러리 초기화)
8 // 또한 소켓 구현의 세부 정보를 담는 WSADATA 데이터 획득
9 return ::WSAStartup(MAKEWORD(2, 2), pWsaData);
10 // 성공 시 0 반환
11 // 실패 시 오류 코드 반환
12}

◆ CreateWindowSocket_IPv4()

SOCKET CreateWindowSocket_IPv4 ( bool isTCP,
OUT int * errCode = NULL )

◆ CreateDestinationADDR() [1/2]

SOCKADDR_IN CreateDestinationADDR ( const char * destIP,
uint16 destPort )
46{
47 SOCKADDR_IN destAddr;
48 (void)memset(&destAddr, 0, sizeof(destAddr));
49 destAddr.sin_family = AF_INET;
50 //serverAddr.sin_addr.S_un.S_addr = ::inet_addr("127.0.0.1");
51 // // ULONG S_addr;
52 // // 4바이트 정수로 IPv4 주소 표현
53 // 위 방식은 구식적인 방법, deprecate API warnings 발생! 아래와 같이 설정
54 ::inet_pton(AF_INET, destIP, &destAddr.sin_addr);
55 destAddr.sin_port = ::htons(destPort);
56 // host to network short
57 // 호스트의 리틀 앤디안을 네트워크의 빅 엔디안 표기로
58
59 return destAddr;
60}

◆ CreateDestinationADDR() [2/2]

SOCKADDR_IN CreateDestinationADDR ( IN_ADDR destInAddr,
uint16 destPort )
63{
64 SOCKADDR_IN destAddr;
65 (void)memset(&destAddr, 0, sizeof(destAddr));
66
67 destAddr.sin_family = AF_INET;
68 destAddr.sin_addr = destInAddr;
69 destAddr.sin_port = ::htons(destPort);
70
71 return destAddr;
72}

◆ CreateDestinationADDR_LoopBack()

SOCKADDR_IN CreateDestinationADDR_LoopBack ( uint16 destPort)
74 {
75 return CreateDestinationADDR("127.0.0.1", destPort);
76}
SOCKADDR_IN CreateDestinationADDR(const char *destIP, uint16 destPort)
Definition WinSocketAPI.cpp:45

◆ CreateDestinationADDR_byDomain()

SOCKADDR_IN CreateDestinationADDR_byDomain ( WCHAR * destDomain,
uint16 destPort )
79{
80 IN_ADDR inAddr;
81 DomainAddrToIP(destDomain, &inAddr);
82 return CreateDestinationADDR(inAddr, destPort);
83}
bool DomainAddrToIP(WCHAR *szDomain, IN_ADDR *pAddr)
Definition WinSocketAPI.cpp:233

◆ ConnectToDestination()

bool ConnectToDestination ( const SOCKET & sock,
const SOCKADDR_IN & destAddr,
OUT int * errCode = NULL )

◆ CreateServerADDR()

SOCKADDR_IN CreateServerADDR ( const char * serverIp,
uint16 port )
137{
138 SOCKADDR_IN serverAddr;
139 (void)memset(&serverAddr, 0, sizeof(serverAddr));
140 serverAddr.sin_family = AF_INET;
141
142 ::inet_pton(AF_INET, serverIP, &serverAddr.sin_addr);
143
144 // ::htonl(INADDR_ANY);
145 // 서버의 네트워크 카드가 여러 개인 경우 주소가 여러 개 존재
146 // 이 때 하드코딩하여 서버의 주소를 고정시킬 경우 이 주소로만 연결될 것
147 // 하지만 INADDR_ANY 인자를 전달하여 루프백 주소를 포함하여 연결될 수 있는
148 // 모든 주소를 연결할 수 있게 만든다.
149 // 루프백 주소도 포함된다.
150
151 serverAddr.sin_port = ::htons(port);
152 // host to network short
153 // 호스트의 리틀 앤디안을 네트워크의 빅 엔디안 표기로
154
155 return serverAddr;
156}

◆ CreateServerADDR_ANY()

SOCKADDR_IN CreateServerADDR_ANY ( uint16 port)
159{
160 SOCKADDR_IN serverAddr;
161 (void)memset(&serverAddr, 0, sizeof(serverAddr));
162 serverAddr.sin_family = AF_INET;
163
164 serverAddr.sin_addr.S_un.S_addr = ::htonl(INADDR_ANY);
165 //const char serverIP[] = "172.30.1.100";
166 //::inet_pton(AF_INET, serverIP, &serverAddr.sin_addr);
167
168 // ::htonl(INADDR_ANY);
169 // 서버의 네트워크 카드가 여러 개인 경우 주소가 여러 개 존재
170 // 이 때 하드코딩하여 서버의 주소를 고정시킬 경우 이 주소로만 연결될 것
171 // 하지만 INADDR_ANY 인자를 전달하여 루프백 주소를 포함하여 연결될 수 있는
172 // 모든 주소를 연결할 수 있게 만든다.
173 // 루프백 주소도 포함된다.
174
175 serverAddr.sin_port = ::htons(port);
176 // host to network short
177 // 호스트의 리틀 앤디안을 네트워크의 빅 엔디안 표기로
178
179 return serverAddr;
180}

◆ CreateServerADDR_LoopBack()

SOCKADDR_IN CreateServerADDR_LoopBack ( uint16 port)
182 {
183 return CreateServerADDR("127.0.0.1", port);
184}
SOCKADDR_IN CreateServerADDR(const char *serverIP, uint16 port)
Definition WinSocketAPI.cpp:136

◆ BindSocket()

bool BindSocket ( SOCKET & sock,
SOCKADDR_IN & serverAddr,
OUT int * errCode = NULL )

◆ ListenSocket()

bool ListenSocket ( SOCKET & sock,
int backlog,
OUT int * errCode = NULL )

◆ AcceptSocket()

SOCKET AcceptSocket ( SOCKET & sock,
SOCKADDR_IN & clientAddr,
OUT int * errCode = NULL )

◆ IN_ADDR_TO_STRING()

void IN_ADDR_TO_STRING ( const IN_ADDR & inAddr,
char ipStr[INET_ADDRSTRLEN] )

◆ DomainAddrToIP()

bool DomainAddrToIP ( WCHAR * szDomain,
IN_ADDR * pAddr )
234{
235 ADDRINFOW* pAddrInfo;
236 SOCKADDR_IN* pSockAddr;
237 if (GetAddrInfo(szDomain, L"0", NULL, &pAddrInfo) != 0) {
238 return FALSE;
239 }
240 else {
241 pSockAddr = (SOCKADDR_IN*)pAddrInfo->ai_addr;
242 *pAddr = pSockAddr->sin_addr;
243 FreeAddrInfo(pAddrInfo);
244
245 return TRUE;
246 }
247}