본문 바로가기

프로그래밍 - 활용/Back-end

[컴퓨터네트워크] Cygwin으로 TCP 서버 클라이언트 통신하기

윈도우 환경에서 리눅스 사용이 가능하게 하는 GNU프로그램인 Cygwin의 사용법 및 TCP 통신에 대해 설명하도록 하겠다.


0. Cygwin 설치

리눅스의 직접적인 사용에 어려움이 있는 윈도우 사용자를 위한 프로그램 설치가 필요하다.
이때, 후보지는 Cygwin과 Virtual Machine Ubuntu가 있다.
필자는 Virtual Machine Ubuntu가 있음에도 불구하고, 편리성을 위해 Cygwin을 설치했다.
 
설치주소: http://cygwin.com/install.html
본인의 운영체제 비트에 맞춰 setup 실행파일을 다운로드하면 된다.
 
실행파일을 실행할 때 유의할 부분은 다운로드 사이트와 패키지 설치이다.
다운로드 사이트의 경우, 후보지가 엄청나게 많은데 본인이 희망하는 임의의 사이트를 지정하면 된다.
패키지의 경우, gcc-core, gcc-g++, libgcc1을 설치하면 된다.
 
설정을 완료한 후, Cygwin을 켜서 gcc를 입력했을 때 출력값이 나온다면 올바른 설치를 완료한 것이다.
 
 

1. exe파일 생성하기

c코드로 이루어진 소스코드가 주어졌을 때, exe파일을 생성해야 한다.
소스코드가 자동으로 Cygwin폴더 안으로 이동하지 않기에, 직접 넣어주어야 한다.
본인이 설치한 주소(c>cygwin64>home>user)로 이동해 해당 소스코드를 넣어준다.
 
필자에게 주어진 소스코드는 echo_client.c, echo_server.c였다.

gcc echo_server.c -o eserver
gcc echo_client.c -o eclient

터미널에서 위의 코드를 입력해 exe파일을 생성할 수 있다.
본인이 제대로 생성했는지 파악을 원한다면, 터미널에 ls를 입력하거나 직접 해당 위치에 파일의 유무를 확인하면 된다.
 
 

2. 서버와 클라이언트 연결하기

드디어 서버와 클라이언트를 연결하는 단계에 돌입했다.
주의해야 할 점은 하나의 터미널 안에서 모든 과정이 이루어지는 것이 아니다.
각각의 터미널을 생성해 통신이 이루어져야 한다.
즉, 서버용 터미널과 클라이언트용 터미널 2개를 생성해야 한다는 셈.
 
(1) 서버 실행하기 [코드]

./eserver 9190

(2) 클라이언트 실행하기 [코드]

./eclient 127.0.0.1 9190

(3) 서버 및 클라이언트 [실제 실행화면]

서버 / 클라이언트

서버와 클라이언트가 성공적으로 연결되었다! 🍀
서버용 터미널에서 먼저 코드를 입력한 후, 클라이언트용 터미널에서 코드를 입력해 통신을 했다.
 
 

3. 상태 확인하기: netstat

터미널에 netstat을 이용해 현재 서버와 클라이언트의 통신이 어떻게 진행되고 있는지 파악할 수 있다.
이때, netstat에 조건을 붙이게 되는데 이 조건에 따라 나타나는 정보가 달라지게 된다.

  • -n: 다른 pc와 연결되어 있는 포트번호 확인
  • -a: 다른 pc와 연결되어 있거나 대기중인 모든 포트번호 확인
  • -o: 각 연결의 소유자 프로세스 ID 표시

(1) 코드

netstat -nao | findstr 9190

(2) 실행화면


컴퓨터 네트워크의 경우, 서버와 클라이언트가 서로 소통하는 것의 개념과 코드 상으로 구현되는 개념 모두를 이해해야 한다. 이에 더불어 구현은 리눅스 환경에서!
쉽지 않은 개발의 과정을 거쳐 통신에 성공할 수 있어 다행이다. 이 글이 사소한 요인 또는 감당할 수 없는 거대한 요인에 가로막힌 모두에게 도움이 될 수 있기를 바란다. 😇