Your SlideShare is downloading. ×
  • Like
Winsock
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
100
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Winsock
  • 2. winsock  Windows Socket API의 줄임말로, 윈도 운영체제 기반의 네트워크 프로그램을 개발하기 위한 기술 요소들이 적용된 개발 도구  BSD socket을 기반으로 하고 있어서 리눅스 환경과 유사
  • 3. BSD Socket과의 차이점  BSD Socket API의 거의 전부를 그대로 사용할 수 있다.  dll 로드 : winsock.dll을 로딩해야 한다.  소켓 지정 번호 : 리눅스는 소켓 지정 번호가 곧 파일 지정 번호로 자료형은 signed int이다. 윈속은 소켓을 가리키기 위해서 SOCKET을 사용하는데, unsigned int 형이다. 그러므로 포팅 작업을 쉽게 하기 위해서 int형dmf 사용해도 큰 문제는 없다. 대신 컴파일러의 종류에 따라서 warining message를 출력할 수도 있다. 가능하면 SOCKET 자료형을 그대로 사용하는 것이 좋다.
  • 4. TCP  상위계층  메시지나 파일들을 좀더 작은 패킷으로 나누어 인터넷을 통해 전송하는 일을 담당  수신된 패킷들을 원래의 메시지로 재조립하는 일을 담당
  • 5. IP  하위계층  각 패킷의 주소 부분을 처리함으로써, 패킷들이 목적지에 정확하게 도달할 수 있게 한다.
  • 6. TCP/IP  네트워크 상의 각 게이트웨이는 메시지를 어느 곳으로 전달해야 할지를 알기 위해, 메시지의 주소를 확인한다.  한 메시지가 여러 개의 패킷으로 나뉘어진 경우 각 패킷들은 서로 다른 경로를 통해 전달될 수 있으 며, 그것들은 최종 목적지에서 재조립된다.  client / server 모델을 사용하는데, client의 요구에 대응하여 네트워크 상의 server가 웹 페이지를 보내는 식의 서비스를 제공한다.  connectionless(네트워크를 독점하지 않으므로 모든 사람들이 그 경로를 공동을 사용할 수 있다.)
  • 7. socket  인터넷 상에서 물리적으로 떨어져있는 소프트웨어와 소프트웨어 간의 통신을 담당하는 „소프트웨어 통신 도구„  인터넷의 종단에 위치하면서 소프트웨어와 소프트웨어를 연결한다.
  • 8. socket 예시 Firefox socket Apache socketInternet
  • 9. socket 예시  socke은 clien인 firefox와 serve인 apache가 서로 통신할 수 있게 연결한다.  socket을 이용하여 firefox는 apache서버로 웹페이지 요청을 하고, apache serve는 요청을 분석 해서 웹페이지를 firefox에 전송한다.
  • 10. 유닉스 socket 자료형  유닉스는 모든 자월을 파일로 다룬다.  socket 역시 예외는 아니다.  모든 파일 관련 함수는 signed int형의 파일 지정 번호를 이용해서 파일을 제어한다.  BSD socket도 int형의 파일 지정 번호를 이용해서 socke을 다룬다.
  • 11. 윈도우 socket 자료형  windows는 자월을 파일이 아닌 각각의 독립된 커널 객체로 본다.  파일 지정 번호가 아닌 HANDLE을 이용해서 제어한다.  객체의 인스턴스를 다루는 방식이다.  windows의 특성상 socket 역시 socket HANDLE로 다루어야 하겠지만, BSD 소켓과의 호환을 유재 하기 위해서 unsigned int를 재정의한 (소켓 지정 번호) SOCK으로 소켓을 다룬다.  socket을 지시하기 때문에 socket 지시자라고 부른다.  기본적으로 windows는 file과 socket을 다른 객체로 본다.
  • 12. winsock 초기화 int WSAStartup { // winsock 초기화 함수 WORD wVersionRequested, // 프로그램이 요구하는 최상위 윈속 버전 LPWSADATA lpWSAData // WSADATA 타입 변수의 주소를 전달 }; // 이를 통해 시스템에서 제공하는 윈속 구현에 대한 세부사항을 // 얻을 수 있다. int WSACleanup(void); // 윈속 사용을 중지함을 운영체제에 알리고 관련 리소스를 // 반환한다.
  • 13. winsock 초기화 예제 코드 #include <winsock2.h> int main(int argc, char * argv[]) { // 윈속 초기화 WSADATA wsa; if ( 0 != WSAstartup(MAKEWORD(2,2), &wsa)) // WSAstartup 함수는 성공 시 0 return -1; MessageBox(NULL, “윈속 초기화 성공”, “성공“, MB_OK); // 윈속 종료 WSACleanup(); return 0; }
  • 14. 소켓 생성  socket() 함수는 사용자가 요청한 프로토콜을 이용하여 통신을 할 수 있도록 내부적으로 리소스를 할당하고, 이를 접근할 수 있는 일종의 핸들값(SOCKET타입, 32비트 정수 )을 리턴한다.  이 값을 소켓 디스크립터(socket descriptor)라 부르며, 각종 소켓 함수를 호출할 때 인자로 전달하 여 사용하게 된다. SOCKET socket { int af, // 주소 체계를 지정한다. int type, // 소켓 타입을 지정한다. int protocol // 사용할 프로토콜을 지정한다. };
  • 15. TCP를 사용하고자 한다면?  주소 체계는 AF_INET  소켓 타입은 SOCK_STREAM  프로토콜은 IPPROTO_TCP 혹은 0도 가능하다.
  • 16. 소켓 닫기  소켓을 이용한 통신이 끝나면 관련 리소스를 반환해야 한다. int closesocket() { SOCKET s };
  • 17. 소켓 생성과 닫기 예제 코드 #include <stdio.h> #include <winsock2.h> int main(int argc, char * argv[]) { WSADATA wsa; // 윈속 초기화 if (0 != WSAStartup(MAKEWORD(2,2,), &wsa)) return -1; printf(“윈속 초기화 성공n”); // socket() SOCKET tcp_socket = socket(AF_INET, SOCK_STREAM, 0); if(tcp_sck == INVALID_SOCKET) printf(“소켓 생성 실패”); printf(“소켓 생성 성공”); // closesocket() closesocket(tcp_socket); WSACleanup(); return 0; }