서버, 클라이언트 연습 프로그램[구구단, C,Linux]

250x250

서버, 클라이언트 연습 프로그램[구구단, C, Linux]

안녕하세요.

오늘은 유닉스라는 과목을 들으면서 제가 만든 코드를 올려보려고 합니다.

  • TCP서버 프로그램 
  • server는 client가 접속하면 random한 구구단 문제를 client로 전송
  • client는 답을 입력하고 서버로 전송
  • server는 답이 맞았는지 틀렸는지 client로 전송
  • client는 server로 부터의 결과를 출력

코드

코드는 아래와 같습니다.

코드 파일은 깃허브에서 다운받으실 수 있습니다.

(귀찮아서 나중에 링크 올릴게요.)

1. tcp서버(server) 코드

2. tcp구구단 클라이언트(client) 코드

실행

학교에서 제공한 서버와 제가 가지고 있는 라즈베리파이(라즈비안)를 이용해서 코드를 실행했습니다.(리눅스 환경)

1. tcp 서버와 클라이언트(server&client)

최종적으로 위의 사진처럼 나올겁니다.

이해를 돕기 위한 설명

tcp와 udp의 차이에 대한 설명

1. tcp:전송 실패하면 다시 보냄

   udp:전송 실패해도 다시 보내지 않음.

2. tcp: 연결 지향형(connection-oriented)

   udp: 비연결형(connectionless)

3. tcp:신뢰성 보장

   udp:신뢰성 보장하지 않음

4. tcp:흐름 제어 기능(flow-control)제공

   udp: 흐름 제어 기능 없음

5. tcp:순서 보장

   udp:순서를 보장하지 않음

ip주소: 인터넷을 이용할 때 사용하는 주소로 점(.)으로 구분된 32비트 숫자.

[유용한정보] - 아이피 확인하는 방법

 

아이피 확인하는 방법

아이피 확인하는 방법. 아이피란? 인터넷 상의 컴퓨터는 다른 컴퓨터와 구별될 수 있도록 적어도 한개 이상의 고유한 주소를 가지고 있습니다. ip주소는 버전4(ipv4)로 네도막으로 나눠진 최대 12자리의 번호로 이..

intunknown.tistory.com

소켓의 종류

포트번호: 호스트에서 동작하고 있는 서비스를 구분하는 번호

             -2바이트 정수로 0~65535까지 사용 가능

주요 코드 설명

소켓 주소 구조체는 아래와 같습니다.

문자열 형태의 ip주소& 구조체 형태의 ip주소

소켓 인터페이스 함수는 아래와 같습니다.

socket:소켓 생성하기 

bind: 소켓에 이름 지정하기

listen: 클라이언트 연결 기다리기

accept: 연결 요청 수락하기

connect: 서버와 연결하기

recv: 데이터 받기

send: 데이터 보내기

close: 소켓 파일 기술자 종료

그냥 포트를 사용하면 여러 번 사용하지 못합니다.

그럴 때 사용하는 포트 재사용:setsockopt()

tcp형태(소켓 함수의 호출 순서)

srand: 랜덤으로 구구단을 출력하기 위해서 사용

sprintf(buf,"dd%d",n);

...더보기

간단합니다.

buf[64]이고 n이 99라고 가정하고 설명하겠습니다.

sprintf(buf,"dd%d",n)으로 하면 buf에는 dd99가 저장돼있다고 생각하면 됩니다.

문자+문자같은 느낌이랄까?

대충 거의 설명을 끝낸 것 같네요.

+추가

혹시 이해가 잘 안되면 아래 pdf의 예제를 참고해주세요.

위의 내용들도 아래의 예제에 있습니다. 

10.socket1.pdf
3.27MB

 

 

Designed by JB FACTORY