오류처리
소켓함수 리턴값으로 오류 확인이 되었다면 전역변수 errno로 구체적인 오류코드를 얻을 수 있다.
오류코드에 대응하는 오류메시지는 strerror( ) 함수로 얻을 수 있다.
strerror( ) 함수는 오류코드를 받고 오류 메시지를 리턴한다.
소켓 생성과 닫기
소켓생성하기
소켓을 사용해 통신하려면 통신 양단이 같은 프로토콜을 사용해야한다
-> TCP 사용할 것인지, UDP 사용할 것인지를 약속해야함
socket( ) 함수는 사용자가 프로토콜을 통해 통신할 수 있도록 내부적으로 리소스를 할당하고
접근할 수 있는 핸들값을 리턴한다 -> 소켓 디스크럽터 라고 부르며 각종 소켓 함수를 호출 할 때 인수로 전달한다.
C
#include <sys/types.h>
#include <sys/socket.h>
int socket( ① int domain, ② int type, ③ int protocol );
1. 주소 체계 지정
2. 소켓 타입 지정
3. 사용할 프로토콜 지정
주소 체계
통신상대로 유일하게 지정할 수 있는 주소 필요 -> 주소체계 -> 지정방식
네트워크 프로토콜의 종류에 따라 달라진다.
| 사용할 프로토콜 | 주소체계 |
| IPv4 | AF_INET |
| IPv6 | AF_INET6 |
사용할 프로토콜에 따라 socket( ) 함수의 첫번 째 인수로 전달
소켓 타입


프로토콜

주소 체계와 소켓 타입이 같더라도 해당 프로토콜이 같더라도
해당 프로토콜이 두 개 이상 존재할 경우 명시적으로 지정해야한다.
소켓닫기
소켓을 사용한 통신을 마치면 리소스를 반환해야한다
-> close( ) 함수 사용
C
#include <unistd.h>
int close( int fd);
| 성공 0 | 실패 -1 |
C
int main(int argc, char *argv[]) {
// 소켓 생성
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET) err_quit("socket()");
printf("[알림] 소켓 생성 성공\n");
// 소켓 닫기
close(sock);
return 0;
}'리눅스 소켓 프로그래밍 TCPIP' 카테고리의 다른 글
| UDP 서버 - 클라이언트 (0) | 2024.12.16 |
|---|---|
| 멀티 스레드 : 리눅스 (3) | 2024.12.16 |
| TCP 서버 - 클라이언트 (1) | 2024.12.13 |
| 소켓 주소 구조체 다루기 (3) | 2024.12.13 |
| 리눅스 - 네트워크와 소켓 프로그래밍 (0) | 2024.12.12 |