์ค์ฑ์ฐ์ ใ์ดํ TCP/IP ์์ผ ํ๋ก๊ทธ๋๋ฐใ์ ํ ๋๋ก ๊ณต๋ถํ์ฌ ์์ฑ๋์์.
- ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ
: ์๋ก ๋ค๋ฅธ ๋ ์ปดํจํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํ๋ ๊ฒ !
: ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ด ํ์ํ๋ "์ธํฐ๋ท"์ด ์กด์ฌ
: ์ํํธ์จ์ด์ ์ธ ์ฐ๊ฒฐ์ ์ด์์ฒด์ ์์ ์กด์ฌํ๋ ์์ผ(Socket) ์ฌ์ฉ
- TCP์์ผ์ ์ ํ๋ง๊ณผ ๋น์ทํ๋ค
1. ์์ผ ์์ฑ ํจ์ (์ ํ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์ ํ๊ธฐ๊ฐ ํ์ํ ๊ฒ์ฒ๋ผ, ์์ผ์ ์ฌ์ฉํ๋ ค๋ฉด ์์ผ์ ๋ง๋ค์ด์ผ ํจ)
#include <sys/socket.h>
int socket(int domain, int type, int protocol); // ์ฑ๊ณต ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ, ์คํจ์ -1 ๋ฐํ
- ์๋ฒ -
2. bindํจ์ (์ ํ๋ฒํธ ๋ถ์ฌ์ ๋น์ ๋จ, IP์ ํฌํธ๋ฒํธ ๊ฐ์ ์์ผ ์ฃผ์ ์ ๋ณด ํ ๋นํจ)
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *myaddr, socklen_t *addrlen); // ์ฑ๊ณต ์ 0, ์คํจ์ -1 ๋ฐํ
3. listenํจ์ (์ ํ๋ฅผ ๋ฐ๋ก ๋ฐ์ ์ ์๋ ์ํ์ฌ์ผ ํ๋ ๊ฒ์ฒ๋ผ ์์ผ๋ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ์ํ์ฌ์ผ ํจ)
#include <sys/socket.h>
int listen(int sockfd, int backlog); // ์ฑ๊ณต ์ 0, ์คํจ์ -1 ๋ฐํ
4. acceptํจ์ (์ํ๊ธฐ๋ฅผ ๋๋ ๊ฒ์ ๋น์ ๋๋, ๋ฐ์ดํฐ ์ก์์ ์ ์ํ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํ๋ ๊ฒ)
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); // ์ฑ๊ณต ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ, ์คํจ์ -1 ๋ฐํ
- ํด๋ผ -
2. connectํจ์ (์ ํ๋ฅผ ๊ฑฐ๋ ๊ฒ, ์ฆ ์ฐ๊ฒฐ์ ์์ฒญํ๋ ํจ์)
#include <sys/socket.h>
int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen); // ์ฑ๊ณต ์ 0, ์คํจ์ -1 ๋ฐํ
- ์๋์ฐ ๊ธฐ๋ฐ ์์ผ ํจ์
#include <winsock2.h>
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData); // ์ฑ๊ณต ์ 0, ์คํจ ์ 0์ด ์๋ ์๋ฌ ์ฝ๋ ๊ฐ ๋ฐํ
// ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์ : ์์ผ ๋ฒ์ - MAKEWORD(1, 2) MAKEWORD(2, 2)
// ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์ : WSADATA ๊ตฌ์กฐ์ฒด ๋ณ์์ ์ฃผ์ ๊ฐ์ ์ธ์๋ก ์ ๋ฌ
int WSACleanup(void); // ์ฑ๊ณต ์ 0, ์คํจ ์ SOCKET_ERROR ๋ฐํ
SOCKET socket(int af, int type, int protocol) // ์ฑ๊ณต ์ ์์ผ ํธ๋ค, ์คํจ ์ INVALID_SOCKET ๋ฐํ
int bind(SOCKET s, const struct sockaddr* name, int namelen); // ์ฑ๊ณต ์ 0, ์คํจ ์ SOCKET_ERROR ๋ฐํ
int listen(SOCKET s, int backlog); // ์ฑ๊ณต ์ 0, ์คํจ ์ SOCKET_ERROR ๋ฐํ
SOCKET accept(SOCKET s, struct sockaddr* addr, int* addrlen); // ์ฑ๊ณต ์ ์์ผ ํธ๋ค, ์คํจ ์ INVALID_SOCKET ๋ฐํ
int connect(SOCKET s, const struct sockaddr* name, int namelen); // ์ฑ๊ณต ์ 0, ์คํจ ์ SOCKET_ERROR ๋ฐํ
int closesocket(SOCKET s); // ์ฑ๊ณต ์ 0, ์คํจ ์ SOCKET_ERROR ๋ฐํ
int send(SOCKET s, const char* buf, int len, int flags); // ์ฑ๊ณต ์ ์ ์ก๋ ๋ฐ์ดํธ ์, ์คํจ ์ SOCKET_ERROR ๋ฐํ
// ์ ์ก ๋์๊ณผ์ ์ฐ๊ฒฐ์ ์๋ฏธํ๋ ์์ผ ํธ๋ค ๊ฐ, ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ฒํผ ์ฃผ์๊ฐ, ์ ์ก ๋ฐ์ดํธ ์, ๋ฐ์ดํฐ ์ ์ก ์ต์
int recv(SOCKET s, const char* buf, int len, int flags); // ์ฑ๊ณต ์ ์ ์ก๋ ๋ฐ์ดํธ ์, ์คํจ ์ SOCKET_ERROR ๋ฐํ