
accept() 시스템 콜의 결과로 얻은 소켓은 클라이언트와 통신하기 위한 소켓입니다. 이 소켓을 사용하여 클라이언트와 통신하기 위한 함수는 read()와 write() 함수입니다.
read() 함수를 사용하여 데이터를 읽는 방법은 다음과 같습니다.
1. read() 함수의 첫 번째 인자로 accept() 시스템 콜의 결과로 얻은 소켓을 지정합니다.
2. read() 함수의 두 번째 인자로 읽어올 데이터의 크기를 지정합니다.
3. read() 함수의 세 번째 인자로 읽어올 데이터를 저장할 버퍼를 지정합니다.
4. read() 함수를 호출하여 데이터를 읽습니다.
write() 함수를 사용하여 데이터를 쓰는 방법은 다음과 같습니다.
1. write() 함수의 첫 번째 인자로 accept() 시스템 콜의 결과로 얻은 소켓을 지정합니다.
2. write() 함수의 두 번째 인자로 쓰기할 데이터를 지정합니다.
3. write() 함수의 세 번째 인자로 쓰기할 데이터의 크기를 지정합니다.
4. write() 함수를 호출하여 데이터를 쓸 수 있습니다.
예를 들어, 다음과 같이 클라이언트와 통신하기 위한 소켓을 사용하여 데이터를 읽고 쓰는 방법을示します.
#hostingforum.kr
c
#include
#include
#include
#include
#include
#include
#define PORT 8080
#define BUFFER_SIZE 1024
int main() {
// 서버 소켓 생성
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
if (server_socket < 0) {
perror("socket creation failed");
exit(1);
}
// 서버 주소 설정
struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(PORT);
inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr);
// 서버 소켓에 주소 바인딩
if (bind(server_socket, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
perror("bind failed");
exit(1);
}
// 서버 소켓을 listen 모드에 설정
if (listen(server_socket, 3) < 0) {
perror("listen failed");
exit(1);
}
printf("서버가 시작되었습니다.n");
// 클라이언트 연결을 수락하는 루프
while (1) {
// 클라이언트 연결을 수락
struct sockaddr_in client_address;
socklen_t client_address_length = sizeof(client_address);
int client_socket = accept(server_socket, (struct sockaddr *)&client_address, &client_address_length);
if (client_socket < 0) {
perror("accept failed");
continue;
}
printf("클라이언트 연결이 수락되었습니다.n");
// 클라이언트와 통신하기 위한 소켓
char buffer[BUFFER_SIZE];
int bytes_read = read(client_socket, buffer, BUFFER_SIZE);
if (bytes_read < 0) {
perror("read failed");
continue;
}
printf("클라이언트가 보낸 메시지: %sn", buffer);
// 클라이언트에게 메시지를 보냅니다.
char message[] = "Hello, client!";
write(client_socket, message, strlen(message));
// 클라이언트와의 연결을 종료
close(client_socket);
}
return 0;
}
이 예제에서는 accept() 시스템 콜의 결과로 얻은 소켓을 사용하여 클라이언트와 통신하기 위한 read()와 write() 함수를 사용합니다. 클라이언트가 보낸 메시지를 읽고, 클라이언트에게 메시지를 보냅니다.
2025-07-20 10:33