Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minitalk

minitalk 프로젝트는 SIGUSR1SIGUSR2 신호를 사용하여 프로세스 간에 메시지를 전송할 수 있는 클라이언트와 서버를 구현합니다. 클라이언트가 서버로 텍스트 메시지를 보내면, 서버는 이를 받아 터미널에 출력합니다.

목차

프로젝트 개요

minitalk 프로젝트는 **프로세스 간 통신(IPC)**과 유닉스 신호에 대한 이해를 목표로 합니다. 클라이언트와 서버가 SIGUSR1SIGUSR2 신호를 통해 메시지를 비트 단위로 주고받으며, 서버는 수신된 메시지를 터미널에 출력합니다.

기능

  • 서버: 클라이언트가 전송한 메시지를 수신하고, 이를 터미널에 출력합니다.
  • 클라이언트: 특정 메시지를 서버로 전송합니다. 이때, 서버의 프로세스 ID(PID)를 알아야 합니다.
  • 신호 전송: SIGUSR1SIGUSR2를 사용하여 데이터를 비트 단위로 전달합니다.
  • 확인 응답: 서버는 각 비트를 수신한 후, 클라이언트에 응답 신호를 보내 정확한 전송이 이루어졌음을 알립니다.

신호 전송 방식

minitalk 프로젝트에서는 유닉스 신호를 사용하여 0과 1의 비트를 전송함으로써 텍스트 데이터를 전달합니다. 각 문자는 ASCII 값으로 변환된 후 이진법으로 표현되며, 비트 단위로 신호를 통해 전달됩니다.

  1. 문자에서 비트 변환:
    • 각 문자를 이진법으로 변환하여 8개의 비트로 분리합니다.
  2. 비트별 전송:
    • 비트가 0이면 SIGUSR1 신호를, 1이면 SIGUSR2 신호를 서버에 전송합니다.
  3. 수신 확인:
    • 서버는 각 비트를 수신한 후, 클라이언트에 응답 신호를 보내 전송이 성공적으로 이루어졌음을 확인합니다.
  4. 종료 신호:
    • 메시지의 모든 비트를 전송한 후, 클라이언트는 NULL 문자(\0)를 전송하여 서버가 메시지의 끝을 인식하게 합니다.

이 과정을 통해 메시지가 올바르게 전송되고, 서버는 이를 출력합니다.

구현 세부 사항

  • 비트 단위 전송: 클라이언트는 메시지를 하나의 문자씩, 각 문자를 8개의 비트로 변환하여 서버에 전송합니다.
  • 신호 대기: 서버는 특정 PID에서 오는 SIGUSR1 또는 SIGUSR2 신호를 대기하고 있으며, 수신한 신호에 따라 0과 1을 구분합니다.
  • 응답 신호: 서버가 각 비트를 수신하면 클라이언트에 응답 신호를 보내어 전송이 성공적으로 이루어졌음을 알립니다. 이 과정을 통해 서버는 비트를 순서대로 재조립하여 메시지를 완성합니다.
  • 종료 처리: 클라이언트는 모든 문자를 전송한 후 종료 신호(\0)를 보내며, 서버는 이를 확인하면 메시지 수신을 종료하고 현재의 메시지를 출력합니다.

설치 방법

  1. 터미널에서 이 저장소를 클론합니다.

    git clone https://github.com/jmsmg/minitalk.git
    cd minitalk
  2. 프로젝트를 빌드합니다.

    make
  3. 컴파일이 완료되면 serverclient 실행 파일이 생성됩니다.

사용 방법

서버 실행

먼저, 서버를 실행하여 프로세스 ID(PID)를 확인합니다. 서버는 이 PID를 통해 클라이언트와의 통신을 허용합니다.

./server

서버가 실행되면 PID가 터미널에 표시됩니다. 클라이언트는 이 PID를 사용하여 서버로 메시지를 전송할 수 있습니다.

클라이언트 실행

클라이언트를 실행하여 메시지를 서버로 전송합니다. server_pid에는 서버의 PID를 입력하고, "message"에는 보내고자 하는 메시지를 입력합니다.

./client <server_pid> "Hello, Minitalk!"

예를 들어, 서버 PID가 12345라면 다음과 같이 메시지를 전송합니다.

./client 12345 "Hello, Minitalk!"

서버는 수신한 메시지를 터미널에 출력합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages