프로그래밍 노트

[winsock 초보 프로그래밍] 03 소켓 만들기 본문

통신관련

[winsock 초보 프로그래밍] 03 소켓 만들기

띠리 2007. 4. 16. 17:09

소켓이란 무엇인가?

소켓은 사용자에게 있어서 데이터의 출입구된다. 사용자는 소켓에 대해서 데이터를 쓰거나 읽는 것으로 통신이 이루어진다.

소켓은 두개 이상의 소켓이 서로 관계를 가지는 것으로 처음으로 유효하게 된다.
예를들어 종이컵전화의 종이컵 부분은 양단의 종이컵을 실로 연결한 그때에 이용이 가능한다.
소켓도 종이컵과 같이 통신상대의 소켓이 가상적인 관계를 가진 그때 처음으로 이용이 가능하게 된다.
(단, 통신 방식에 따라서 관계를 가진 쪽이 관계를 가진 상대의 수와는 틀리다.)

서로 관계를 가진 소켓에서는 한 쪽에 씌여진 데이터가 벌서 한족의 소켓으로 나아간다. 그 때문에 사용자는 소켓의 뒤쪽에서 움직이는 복잡한 통신 프로토콜을 의식하지 않고 통신을 할수있다.


윈속으로 소켓 만들기

윈속에서는 socket()함수를 이용하여 소켓을 만들 수 있다.
(WSASocket()을 이용해서 소켓을 만들 수 도있디만 여기서는 socket()을 이용해서 만든다.)

======================================================================

#include <stdio.h>

#include <winsock2.h>


int main()

{

    WSADATA    wsaData;

    SOCKET    sock;


    WSAStartup(MAKEWORD(2, 0), &wsaData);


    sock = socket(AF_INET, SOCK_STREAM, 0);

    if(sock == INVALID_SOCKET)

    {

        printf("소켓 만들기 실패\");

        return 1;

    }


    WSACleanup();


    return 0;

}


======================================================================


윈속에서는 소켓은 socket()함수에서 반환되어진 값이 소켓이 되어진다.
모든 통신은 socket()함수에서 반환되어지는 소켓을 사용하여 이루어진다.
socket()함수가 실패하면 INVALID_SOCKET을 반환한다.

socket()함수는 3개의 인수를 가진다.
통신의 길로 사용되어지는 프로토콜은 address family, socket type, protocol의 3개의 조합으로 결정되어진다.

위 소스의 경우 TCP의 소켓을 만든다.
TCP와 UDP는 소켓을 만든 후의 처리카 크게 달라진다.

Comments