반응형
소켓이란, 데이터 송수신에 사용할 수 있는 소프트웨어 장치이며 네트워크 망의 연결에 사용되는 도구입니다. 또, 네트워크를 통한 두 컴퓨터의 연결을 의미하기도 합니다.
다음은 서버 프로그램 구현에 쓰이는 함수들입니다.
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
// success: 파일 디스크럽터 fail: -1
#include<sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
// success: 0 fail: -1
#include<sys/socket.h>
int listen(int sockfd, int backlog);
// success: 0 fail: -1
#include<sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
// success: 파일 디스크럽터 fail: -1
socket 함수를 호출함으로써 소켓을 생성하고, bind 함수를 호출해서 IP주소와 PORT번호를 할당받습니다. 그리고 listen함수를 호출해서 연결 요청이 가능한 상태로 변경하고 accept함수를 호출함으로써 연결요청에 대한 수락을 합니다.
위 함수들을 사용해서 만든 서버의 소스코드입니다.
https://github.com/kjmin622/TCP-IP-Socket-Programing/blob/master/src/hello_server.c
클라이언트 또한 socket 함수를 사용합니다. socket 함수를 호출한 뒤, bind와 listen를 호출하면 서버가 되고, 아래 connect를 호출하면 클라이언트가 됩니다.
#include<sys/socket.h>
int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);
// success: 0 fail: -1
위 함수를 사용해서 만든 클라이언트의 소스코드입니다.
https://github.com/kjmin622/TCP-IP-Socket-Programing/blob/master/src/hello_client.c
두 코드를 gcc를 이용해 컴파일 하고,
./서버프로그램이름 포트번호
를 통해 서버를 연 뒤,
./클라이언트프로그램이름 ip 포트번호 (ip는 자신의 ip인 127.0.0.1을 사용했습니다)
로 클라이언트를 키면 서버에서 메시지를 수신받아 "Hello World!"를 출력하게 됩니다.
반응형
'현생 > TCP 소켓 프로그래밍' 카테고리의 다른 글
4-1. TCP/IP 프로토콜 스택 [TCP/IP][C][LINUX] (0) | 2022.01.15 |
---|---|
extra. POSIX에서 정의한 자료형 [TCP/IP][C] (0) | 2022.01.14 |
3-2. 주소정보를 담는 구조체 sockaddr_in [TCP/IP][C][LINUX] (0) | 2022.01.14 |
3-1. IP주소와 PORT번호를 통한 데이터 전송 [TCP/IP][C][LINUX] (0) | 2022.01.14 |
2. 소켓의 프로토콜과 타입 [TCP/IP][C][LINUX] (0) | 2022.01.12 |