티스토리 뷰

728x90

문자 전송?

 

문자열 전송은 다수의 문자를 순서에 맞게 보냄으로써 해결할 수 있다.

 

문자를 보내는 방법을 알게된다면 그 행위를 반복함으로써 문자열 전송을 해결할 수 있다.

 

그렇다면 문자는 어떻게 전송할까?

 

C언어에서 문자는 아스키 코드로 표현되고 그로인해 문자를 숫자에 각각 대응시킬 수 있다.

 

예를 들면 문자 'a'는 97이라는 숫자에 대응할 수 있다.

 

또한 우리는 97이라는 숫자를 2진법으로 나타낼 수 있다.

 

나타내면 이와 같은 숫자가 나온다. (1100001)

 

다시 문제로 돌아가 우리는 SIGUSR1, SIGUSR2 이렇게 2개의 신호를 사용할 수 있다.

 

또한 숫자의 비트는 쉬프트 연산을 이용하여 얻어낼 수 있다.

 

이제 1을 만나면 SIGUSR1을 보내고, 0을 만나면 SIGUSR2를 보냄으로써 97이라는 숫자를 서버에 전송할 수 있다!

 

이 기능을 구현하기 위해 클라이언트에서 사용하는 함수는 kill이다.

 

kill은 특정 프로세스에 원하는 신호를 보낼 수 있는 함수이다.

 

또한 위의 부분은 단순히 문자를 전송하는 것이기 때문에

 

서버의 관점에서는 해당 문자가 문자열의 끝인지 시작인지 알 수가 없다.

 

시작의 경우는 받았을 때부터 처리한다고 가정하면 상관없지만,

 

여러 개의 문자열을 받아야하므로 문자열의 끝은 명확해야한다.

 

그렇기 때문에 문자열의 끝이라는 문자를 임의로 생성해서 보내줘야하는데,

 

나는 널문자, 그러니깐 0을 보내줌으로써 문자열의 끝을 알려줬다.

 

이러한 방법 이외에도 처음에 문자열의 개수를 보내주는 등, 다양한 방법이 존재하니 어떻게 처리할 것인지 고려해보는 

 

시간을 갖고 구현해보자!

 

다음 글

https://blog-001.tistory.com/81

 

[42서울, Minitalk] 2. 신호를 이용한 문자열 수신

문자 수신? 문자열 수신은 이전 단계에서 진행한 것처럼 문자를 비트로 수신받아 그 비트들을 쉬프트 연산을 통해 숫자를 만들어주면 된다. 이때 신호를 받기 위해서 signal이라는 함수를 사용해

blog-001.tistory.com

 

댓글
최근에 올라온 글
최근에 달린 댓글
링크