728x90
리눅스 파일 조작
- 리눅스에서는 소켓 조작은 파일 조작과 동일하게 간주됨
- 운영체제가 제공하는 함수를 기반으로 하는 파일 입출력 함수를 통해 소켓을 데이터 송수신에 이용
- 파일 디스크립터를 이용하여 입출력 진행
-> 파일 디스크립터 : 운영체제가 만든 파일(소켓)을 구분하기 위한 숫자
파일 함수
- 파일 열기 : 성공 시 파일 디스크립터, 실패 시 -1 반환
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char* path, int flag);
- 파일 닫기 : open 한 파일 디스크립터 전달. 성공 시 0 실패 시 -1 반환
#include <unistd.h>
int close(int fd);
- 데이터 쓰기 : 성공 시 전달한 바이트 수, 실패 시 -1 반환
#include <unistd.h>
ssize_t write(int fd, const void* buf, size_t nbytes);
- 데이터 읽기 : 성공 시 수신한 바이트 수, 실패 시 -1 반환
#include <unistd.h>
ssize_t read(int fd, void* buf, size_t nbytes);
파일 함수를 이용한 소켓 생성
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>
int main(void)
{
int fd1;
fd1=socket(PF_INET, SOCK_STREAM, 0);
printf("file descriptor 1: %d\n", fd1);
close(fd1);
return 0;
}
728x90
'Programming > Network' 카테고리의 다른 글
열혈 TCP/IP 03-2. 주소정보의 표현 (0) | 2021.02.02 |
---|---|
열혈 TCP/IP 03-1. 소켓에 할당되는 IP주소와 PORT번호 (0) | 2021.02.02 |
열혈 TCP/IP 02-1. 소켓의 프로토콜과 그에 따른 데이터 전송 특성 (0) | 2021.01.31 |
열혈 TCP/IP 1-3. 윈도우 기반 구현하기 (0) | 2021.01.31 |
열혈 TCP/IP 1-1. 네트워크 프로그래밍과 소켓의 이해 (0) | 2021.01.26 |