TCP/IP

1. 프로토콜(Protocol) - 종단 시스템간 어떻게 데이터 교환을 할 것인지 정한 통신 규약

2. TCP/IP - 호스트들이 상호 통신하기 위한 표준화된 프로토콜

3. TCP/IP 프로토콜 계층 구조


소켓(Socket)
1. 소켓이란 떨어져 있는 두 호스트를 연결해주는 도구를 말합니다

2. 운영체제가 만들어 주는 S/W적인 장치

3. 트랜스포트 계층(TCP,UDP)을 이용하는 API

4. 소켓을 생성한다는 것은 시스템 내부적으로 통신에 필요한 리소스를 할당하는 것을 의미함 


소켓통신 흐름의 이해


LInux의 특징

1) Linux에서는 콘솔, 소켓, 파일 등을 파일로 간주합니다
  1. 모두 파일 디스크립터가 할당됩니다
  2. 파일 입출ㄹ력 함수를 소켓에서도 사용가능합니다
    -read(), write(). close()

2)파일 디스크립터(File Descriptor)
  1. 시스템으로 부터 할당 받은 파일이나 소켓을 대표하는 정수를 말합니다
  2. 파일 디스크립터 0,1,2는 이미 표준 입출력에 할당되어 있습니다
  3. 윈도우즈 기반에서의 handle과 유사합니다

Linux의 파일입출력 함수

1)File 열기 / 닫기


2)데이터 쓰기 / 읽기


Server 소켓 구현

1)소켓 생성



2)주소 할당


3)연결 대기


4)연결 요청 수락


5)소켓 닫기


Client 소켓 구현

1)소켓 생성


2)서버로의 연결 요청



네트워크 프로그래밍 흐름


응용!))
server프로그램이 client프로그램으로 "hello world!"전송

    1. 리눅스에서 server.c client.c 작성
    2. server프로그램을 실행시켜 놓은 상태에서 client 프로그램을 실행시킴

Sever.c


Client.c


결과>>
컴파일후 server 실행



다른 창에서 client실행


Hello world!가 전송된것을 확인 할 수 있다!

Posted by mantwo

댓글을 달아 주세요

  1. 좋은자료 2011.08.01 14:51  댓글주소  수정/삭제  댓글쓰기

    감사드립니다.

    똑같이 따라 했지만 Connect error 이 발생햇습니다. 어디가 잘못된것일까요..

  2. mantwo 2011.08.08 09:42 신고  댓글주소  수정/삭제  댓글쓰기

    아 댓글 감사드립니다 휴가 기간이라 답글이 늦었습니다

    혹시 visual이나 cl 컴파일러로 컴파일 하신게 아닌가요?

    위 소스는 linux 환경기반입니다~~

    아니면 오타가 있나? ㅠ.ㅠ 없는거 같은데~

  3. 우워어 2013.11.04 10:34  댓글주소  수정/삭제  댓글쓰기

    client.c에 ip주소를 127.0.0.1로 하니까 되네요

  4. 감사 2013.12.01 20:33  댓글주소  수정/삭제  댓글쓰기

    뭐로 컴파일 해야하나요?

  5. ㅁㅁ 2014.05.10 11:02  댓글주소  수정/삭제  댓글쓰기

    make 파일명 으로 컴파일하면 됩니다

  6. ㅇㅇㅇ 2014.12.11 14:34  댓글주소  수정/삭제  댓글쓰기

    ]$ gcc server.c -o server
    ]$ gcc client.c -o client

    그냥 이런식으로 컴파일 하면 안되나용?