윈도우 소켓 기본 작업 / WSA 초기화

#include <iostream>
#include <WinSock2.h>
#include <WS2tcpip.h>
using namespace std;

#pragma comment(lib, "Ws2_32.lib") // Ws2_32.lib 라는 라이브러리 파일을 포함해라 -> 이거 안하면 링크 에러남

int main()
{
	WSADATA wsa;
	int nResult{};

	nResult = WSAStartup(MAKEWORD(2, 2), &wsa);

	if (nResult != 0) // 이게 0이면 에러임
	{
		std::cout << "WSAStartup 에러" << '\\n';
	}

	WSACleanup();
}

소켓 생성

SOCKET mySocket = socket(AF_INET, SOCK_DGRAM, 0); // 소켓 생성함수 
// 인터넷으로 하는 통신이냐? -> 보통 AF_INET 씀 그냥 define임

Part1_소켓의 타입과 프로토콜의 설정

소켓 바인딩

UDP 한정으로 send만 할거라면 바인딩 필요 없음

nResult = bind(mySocket, (sockaddr*)&recvAddr, sizeof(recvAddr));
if (nResult != 0) // bind는 0이어야 성공이기 때문에 0이 아니면 에러
{
	std::cout << "바인딩 에러" << '\\n';
	closesocket(mySocket);
	WSACleanup();
}

바인딩 하기 전에 sendto 하면 에러남

한 포트에 한번만 바인딩 해야함

send, recv

send

sockaddr_in destAddr{}; // 도착지 주소설정
destAddr.sin_family = AF_INET; // 주소 체계 정하기
destAddr.sin_port = htons(12345); // 포트번호 설정 -> 그냥 12345 포트라고 쓸 수는 없기 때문에 htons를 이용해서 바꿔주는것
inet_pton(AF_INET, "127.0.0.1", &destAddr.sin_addr); // Ws2tcpip.h 를 추가하지 않으면 이 함수에 에러남