통신 19

#014_Window_Network_고정 길이 데이터 전송

안녕하세요 삽잡이입니다. 이번 시간에는 다양한 데이터 전송 방식중에'고정 길이 데이터 전송'에 대해서 알아보려고합니다. 클라이언트와 서버간에 데이터를 주고받을 때... 즉, 통신할 때 어플리케이션 버퍼에 데이터를 입력받고 send 함수를 통해 TCP send 버퍼에 복사해왔었습니다.반대로, recv 함수를 통해 TCP recv 버퍼에서 데이터를 받아와어플리케이션 버퍼에 저장을 받으며 통신을 진행했었습니다. 이렇게 3바이트를 보냈다면 3바이트를 전송받고 7바이트를 보내면 7바이트를 받으며 통신을 진행할 것이라는 소리입니다. 이와 같이 데이터를 주고 받을 때 주의해야할 사항이 있습니다.TCP 방식을 사용해야할 때인데,TCP는 stream 방식을 사용합니다. UDP는 반대로 Datagram 방식을 사용하지요...

#013_Window_Network_클라이언트 서버 통신 (실행 및 연결 확인)

안녕하세요 삽잡이입니다. 이번 시간에는 TCP 서버와 클라이언트간 실제로 실행이 되는 결과를PC에서 확인하고, 연결 역시 확인해보도록 하겠습니다. 지금까지 배워온 대기 소켓, 통신 소켓을 실제로 확인해보는 것입니다.서버와 클라이언트를 통신하기 위한 코드를 보는 것이 아닌,결과 창만을 확인해보도록 하겠습니다. TCP 서버에서 listen() 함수가 성공적으로 return 이 되면 대기 큐가 생긴다고 했습니다. cmd 창에서 netstat -a 명령어를 쳐서 네트워크 연결 상태를 확인해보겠습니다. 본인은 9000번 포트를 통해 소켓을 하나 생성했습니다.이에 'LISTENING' 상태의 TCP 서버가 존재함을 확인할 수 있습니다.즉, 대기 소켓의 정보를 확인한것입니다.'로컬 주소'는 내 정보를 말하는 것이고 ..

#012_Window_Network_클라이언트 서버 통신 (소켓 관점)

안녕하세요 삽잡이입니다. 이번 시간에는 소켓 관점에서 본 클라이언트와 서버간 통신에 대해서 살펴보도록 하겠습니다. 참고로, 이전 내용들을 이해하지 않고 오시면 이해하는데 불편함이 있으실 수 있으니혹여나 처음 접하시는 분들은 이전 글들을 참고해주시길 바랍니다. 우리가 클라이언트와 서버의 통신 때 사용하던 send 함수의 예시입니다.이때 첫번째 인자인 '통신 소켓 핸들'은 클라이언트와 서버간에 통신을 위해 사용됩니다.즉, 통신 소켓의 핸들에는 현재 자신의 IP도 있지만, 상대방의 정보들도 알고 있다 이겁니다.다시말하면, 통신 소켓의 핸들을 통해 서로 연결되어있는 서버와 클라이언트간에 통신이 가능해지는 것입니다. send() 함수를 봤으니 이제 잠시 resv() 함수를 볼까요?recv() 함수에는 통신 소켓과..

#008_Window_Network_클라이언트 서버 통신 (TCP 클라이언트)

안녕하세요 삽잡이입니다. 이번 시간에는 지난시간에 이은 TCP 클라이언트에 대해서 알아보려고합니다. 클라이언트는 가장 먼저 socket()함수를 통해 통신하기 위한 수단인 socket을 생성해야합니다.그 다음 클라이언트는 자신이 원하는 서버에 접속을 해야합니다.따라서, connect()함수를 제공해줍니다. 서버와 연결하기 위해서 필요한 함수이지요...해당 함수 안에는 일반적으로어떤 프로토콜 체계를 사용할지, 어떤 IP를, 어떤 포트를 사용하겠다는 정보를 포함시켜야합니다. socket() 함수까지는 통신 소켓이 아니지만, connect()함수가 성공하게 되면 통신 소켓이 됩니다.참고로, 클라이언트는 서버가 아니기 때문에 대기 소켓이 없습니다.단지, 통신 소켓을 가지고 있을 뿐이지요...통신 소켓도 여러개를..

#007_Window_Network_클라이언트 서버 통신 (TCP 서버)

안녕하세요 삽잡이입니다. 아... 속이 안좋고... 머리가 아픕니다...오늘은 평소보다 더!중간 중간 했던 말들을 또 하는 루프 사태가 발생할 수 있으니... 양해바랍니다....허허허.... 이번 시간에는 클라이언트 서버 프로그램에 대해서즉, 클라이언트와 서버가 어떻게 통신을 하는지에 대해 알아보겠습니다. 우선, 이 글은 TCP/IP 프로토콜 기반의 통신 방식을 알아보려고 하는 글입니다.TCP/IP 프로토콜 말고도 여러가지 프로토콜들이 존재하는데,각 프로토콜마다 통신하는 방법이 다릅니다.그 여러가지 프로토콜 중에서 일반적으로 가장 널리 사용하는 TCP/IP 프로토콜 통신을 배워보겠다는 것이지요. 네트워크에서 많이 사용하는 모델 중 하나가 바로 '크라이언트와 서버 모델'입니다. 일반적으로 서버는 한 대가 ..

#006_Window_Network_IP, DNS

안녕하세요 삽잡이입니다. 이번 시간에는 IP와 DNS에 대해서 생각해보려고합니다. 여러분은 Domain Name Server를 아십니까? DNS라고 부르는데요...클라이언트와 서버가 있다고 생각해봅시다.클라이언트가 서버에 접속하려는데, 따라서 클라이언트의 위치를 알아야겠지요.... 그것이 바로 IP입니다.반대로, 서버도 위치가 있어야지 접속을 할 수 있지 않겠습니까...이 위치도 IP를 말합니다. 서버는 어차피 클라이언트가 붙게되면 IP를 알게 되니까 상관 없지만,처음에 접속할 때 클라이언트는 서버의 위치 즉, IP를 모르면 접속을 할 수 없습니다. 우리가 인터넷을 접속을 위해 sapzapee.tistory.com 과 같이 입력을 하고 접속하면 원래는 IP로 접속 되는 것입니다.사실, 다음, 네이버도 모..

#002_Window_Network_ Intro (TCP/IP 4계층)

안녕하세요 삽잡이입니다. 이번 시간에는 TCP/IP 4계층을 통해데이터가 목적지의 PC에 어떻게 전달되는지 생각해보는 시간을 가져보겠습니다. 네트워크에는 전송을 위한 OSI 7계층이라는 개념이 있습니다. 이론 쪽인데...소켓을 처음 고안해낸 버클리 대학쪽에서 TCP/IP라는 4계층을 만들어 냈습니다...이를 통해 우리는 데이터가 어떻게 날라가는지 확인을 해보도록 하지요... 각 계층별로 핵심을 소개하겠습니다.이해가 가지 않더라도 우선은 가볍게 보시길 바랍니다. 우선 링크 계층에서는 '일대일 전송'을 보장해주고, 데이터 통신을 위한 하드웨어에 관련된 정의를 담당합니다. 다음으로 인터넷 계층에서는ID 번호를 보고 컴퓨터간에 통신을 할 수 있도록 해줍니다.그리고 'IP'를 집어넣습니다... 따라서 데이터를 보..

#001_Window_Network_ Intro (라우터)

안녕하세요 삽잡이입니다. 이번시간부터는 윈도우즈 네트워크 프로그래밍에 대해서 배워보려고합니다.네트워크... 그림으로 같이 표현해줘야하는데... 이게... 핑계같지 않은 핑계로 시간 때문에... 글로만 서술하는 것이 참 힘들군요 허허... 아무튼 달려보도록 하겠습니다. 네트워크는 기본적인 개념이 상당히 중요합니다. 네트워크란 우선 무엇일까요?기본적으로 우리말로 해석하면 Network는 '연결'을 의미합니다.연결이 되려면 단일 시스템으로 안됩니다.그래서 네트워크라는 개념이 들어가면 최소한 시스템 두 대가 연결되어야합니다. 네트워크는 연결되어있는 시스템을 가리켜'네트워크에 물려있는 End System'이라고 부릅니다. 왜 Computer라고 부르지 않을까요?우리는 컴퓨터로 인터넷 하지 않나요...굳이 End ..

#028_WIndow_System_IPC_파이프(1)

안녕하세요 삽잡이입니다. 이번 시간에는 IPC 통신 기법중, 파이프에 대해서 배워보겠습니다. 예전에는 네트워크가 느렸기 때문에 프로세스간 통신을 위해 파이프를 사용했다는데 요즘은 잘 쓰지 않는다고 하네요...아무튼... 그렇지만 개념이 네트워크에서 사용하는 것과 비슷하다고 하니! 파이프에 대해서 알아봅시다! Windows, Linux에서 파이프나 메일슬롯은 파일처럼 다루고자 했다고합니다.그래서 파일 입출력과는 별개처럼 보이는데 CreateFile, ReadFile 과 같은 함수를 사용합니다. 여담으로는 파이프에 대해 알게 되면,파일 입출력을 배우지 않아도 똑같이 프로그래밍 할 수 있다네요...또한, 객체지향에 가면 파일을 직접 가지고 노는 경우는 극히 드물다고 합니다. 왜냐하면, 파일을 직접 가지고 놀게..