#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();
}
typedef : 가명 짓기
UINT_PTR은 unsigned long long을 그냥 그렇게 부른것 → SOCKET은 이 UINT_PTR SOCKET을 이름 붙인것
SOCKET mySocket = socket(AF_INET, SOCK_DGRAM, 0); // 소켓 생성함수
// 인터넷으로 하는 통신이냐? -> 보통 AF_INET 씀 그냥 define임
UDP 한정으로 send만 할거라면 바인딩 필요 없음
nResult = bind(mySocket, (sockaddr*)&recvAddr, sizeof(recvAddr));
if (nResult != 0) // bind는 0이어야 성공이기 때문에 0이 아니면 에러
{
std::cout << "바인딩 에러" << '\\n';
closesocket(mySocket);
WSACleanup();
}
바인딩 하기 전에 sendto 하면 에러남
한 포트에 한번만 바인딩 해야함
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 를 추가하지 않으면 이 함수에 에러남