winsock api : WSASocket
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

WSASocket

Transport-service provider ±â¹ÝÀÇ ¼ÒÄÏÀ» ¸¸µé±â À§Çؼ­ »ç¿ëÇÏ´Â ÇÔ¼ö

»ç¿ë ¹ý

SOCKET WSASocket( 
  __in  int af, 
  __in  int type, 
  __in  int protocol, 
  __in  LPWSAPROTOCOL_INFO lpProtocolInfo, 
  __in  GROUP g, 
  __in  DWORD dwFlags 
); 
 

±âº»ÀûÀÎ »ç¿ë ¹æ¹ýÀº BSD ¼ÒÄÏ »ý¼ºÇÔ¼öÀÎ socketÇÔ¼ö¿Í ºñ½ÁÇÏ´Ù. À©¼ÓÀÇ È®Àå ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Overlapped I/O ¿Í win32 Event ¸ÅÄ¿´ÏÁòÀ» Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.

¸Å°³ º¯¼ö

¸Å°³ º¯¼ö af, type, protocolÀº socketÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù.
  1. af : »ç¿ëÇÒ ÁÖ¼Ò¿µ¿ªÀ» ¸í½ÃÇÑ´Ù.
    AF_UNSPEC 0 Á¤ÀǵÇÁö ¾ÊÀº ÁÖ¼Ò¿µ¿ª
    AF_INET 2 IPv4 ÁÖ¼Ò¿µ¿ª
    AF_IPX 6 IPX/SPX ÁÖ¼Ò¿µ¿ª¿¡¼­ »ç¿ëµÈ´Ù. windows vista ÀÌÈÄ ºÎÅÍ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.
    AF_APPLETALK 17 AppleTalk ¿¡¼­ »ç¿ëµÈ´Ù. vista ÀÌÈĺÎÅÍ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù.
    AF_NETBIOS 17 NetBIOS ÁÖ¼Ò¿µ¿ª¿¡¼­ »ç¿ëµÈ´Ù.
    AF_INET6 23 Internet Protocol version 6 (IPv6) ÁÖ¼Ò¿µ¿ª¿¡¼­ »ç¿ëµÈ´Ù.
    AF_IRDA 26 Infrared Data Association ÁÖ¼Ò¿µ¿ª¿¡¼­ »ç¿ëÇÑ´Ù.
    AF_BTH 32 bluttooth ÁÖ¼Ò¿µ¿ª¿¡¼­ »ç¿ëÇÑ´Ù. windows xp with SP2 ÀÌÈÄ ¹öÀüºÎÅÍ Áö¿øÇÑ´Ù.
  2. type : ¼ÒÄÏ Çü½ÄÀ» ÁöÁ¤ÇÑ´Ù.
    SOCK_STREAM 1 ¿¬°áÁöÇâ, ¾ç¹æÇâÀÇ TCP/IP ±â¹ÝÀÇ Åë½ÅÀ» À§Çؼ­ »ç¿ëµÈ´Ù.
    SOCK_DGRAM 2 UDP/IP ±â¹ÝÀÇ Åë½ÅÀ» À§ÇØ »ç¿ëÇÑ´Ù.
    SOCK_RAW 3 IP Çì´õ¸¦ Á÷Á¢ Á¦¾îÇϱâ À§ÇѸñÀûÀ¸·Î »ç¿ëÇÑ´Ù.
  3. protocol : »ç¿ëÇÒ ÇÁ·ÎÅäÄÝÀ» ÁöÁ¤ÇÑ´Ù.
    BTHPROTO_RFCOMM 3 Bluetooth Radio Frequency Åë½ÅÀ» À§Çؼ­ »ç¿ëÇÑ´Ù. SOCK_STREAM°ú ÇÔ²² »ç¿ëÇÑ´Ù.
    IPPROTO_TCP 6 TCP¸¦ »ç¿ëÇÑ´Ù. AF_INET ȤÀº AF_INET6 af¿Í SOCK_STREAM type°ú ÇÔ²² »ç¿ëÇÑ´Ù.
    IPPROTO_UDP 6 UDP¸¦ »ç¿ëÇÑ´Ù. AF_INET ȤÀº AF_INET6 af¿Í SOCK_DGRAM type°ú ÇÔ²² »ç¿ëÇÑ´Ù.
  4. lpProtocolInfo : ¸¸µé¾îÁö´Â ¼ÒÄÏÀÇ Æ¯¼ºÀ» Á¤ÀÇÇÑ WSAPROTOCOL_INFO ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍ
  5. g : ¼ÒÄÏ ±×·ìÀÇ ½Äº°ÀÚ·Î ¿¹¾àµÈ ¸Å°³ º¯¼ö.
  6. dwFlags : ¼ÒÄÏ ¼Ó¼ºÀ» ÁöÁ¤ÇÑ´Ù.

¼³¸í

WSASocket ÇÔ¼ö´Â ¼ÒÄÏ ±â¼úÀÚ¸¦ ¾ò¾î³»°í, °ü·ÃµÈ ¸®¼Ò½º¸¦ ÇÒ´ç¹Þ´Â Transport-service provicerÀÇ Á¦¾î¸¦ ¹Þ´Â ÇÔ¼ö´Ù. ±âº»ÀûÀ¸·Î Áßø (overlapped)¼Ó¼ºÀ» °¡ÁöÁö ¾Ê´Â ¼ÒÄÏÀ» ¸¸µç´Ù.

¸¸¾à lpProtocolInfo°¡ NULLÀ̶ó¸é, óÀ½ 3°³ÀÇ ¸Å°³ º¯¼ö·Î ¼ÒÄÏÀÇ Æ¯¼ºÀ» Á¤ÀÇ ÇÑ´Ù. lpProtocolInfo°¡ NULLÀÌ ¾Æ´Ï¶ó¸é, WSAPROTOCOL_INFO¸¦ ¹ÙÅÁÀ¸·Î ¼ÒÄÏ Æ¯¼ºÀ» Á¤ÀÇ ÇÑ´Ù.

¸Å°³ º¯¼ö dwFlags´Â ¾Æ·¡ÀÇ °ªµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. OR¿¬»êÀ¸·Î ¿©·¯ ¼Ó¼ºÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
WSA_FLAG_OVERLAPPED Áßø ¼ÒÄÏÀ» ¸¸µç´Ù. Áßø ¼ÒÄÏÀº WSASend, WSASendTo, WSARecv, WSARecvFrom, WSAIoctlµîÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ °ªÀ» ¸í½ÃÇÏÁö ¾ÊÀ¸¸é ºñ Áßø ¼ÒÄÏÀ¸·Î ¸¸µé¾îÁø´Ù.
WSA_FLAG_MULTIPOINT_C_ROOT ¸¸µé¾îÁø ¼ÒÄÏÀÌ ¸ÖƼ Æ÷ÀÎÆ® ¼¼¼Ç¿¡¼­ c_root°¡ µÉ °ÍÀ» ¾Ë·Á ÁØ´Ù.
WSA_FLAG_MULTIPOINT_C_LEAF ¸¸µé¾îÁø ¼ÒÄÏÀÌ ¸ÖƼij½ºÆ® ¼¼¼Ç¿¡¼­ c_leaf°¡ µÉ °ÍÀ» ¾Ë·Á ÁØ´Ù.
WSA_FLAG_MULTIPOINT_D_ROOT ¸¸µé¾îÁø ¼ÒÄÏÀÌ ¸ÖƼ Æ÷ÀÎÆ® ¼¼¼Ç¿¡¼­ d_root°¡ µÉ °ÍÀ» ¾Ë·Á ÁØ´Ù.
WSA_FLAG_MULTIPOINT_D_LEAF ¸¸µé¾îÁø ¼ÒÄÏÀÌ ¸ÖƼ Æ÷ÀÎÆ® ¼¼¼Ç¿¡¼­ d_leaf°¡ µÉ °ÍÀ» ¾Ë·Á ÁØ´Ù.

SOCK_STREAM°ú °°Àº ¿¬°á ÁöÇâ ¼ÒÄÏÀº Àü ÀÌÁß Åë½ÅÀ» Áö¿øÇÑ´Ù. ¿¬°áÀ» À§Çؼ­ connect, WSAConnect ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÐ°í ¾²±â À§Çؼ­´Â °¢°¢ recv, WSARecv°ú send, WSASend¸¦ ¾µ ¼ö ÀÖ´Ù. ¸¸¾à SOCK_DGRAM°ú °°Àº ºñ ¿¬°áÁöÇâ, µ¥ÀÌÅÍ ±×·¥ ÁöÇâ ¼ÒÄÏÀ̶ó¸é sendto, WSASendTo °ú recvfrom, WSARecvFromÇÔ¼ö¸¦ ¾²¸é µÈ´Ù.

¿¹Á¦

¿ì¼±Àº MSDNÀÇ ¿¹Á¦·Î Çϰí, ³ªÁß¿¡ ¿ÏÀüÈ÷ ÀÛµ¿ÇÏ´Â ¿¹Á¦ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ.
#include <windows.h> 
#include <winsock2.h> 
#include <stdio.h> 
 
int main() { 
  WSADATA wsaData; 
  SOCKET RecvSocket; 
 
  int iResult; 
 
  //----------------------------------------------- 
  // Initialize Winsock 
  iResult = WSAStartup(MAKEWORD(2,2), &wsaData); 
  if (iResult != 0) { 
      printf("WSAStartup failed: %d\n", iResult); 
      return 1; 
  } 
 
 
  //----------------------------------------------- 
  // Create a socket  
  RecvSocket = WSASocket(AF_INET,  
    SOCK_DGRAM,  
    IPPROTO_UDP,  
    NULL,  
    0,  
    WSA_FLAG_OVERLAPPED); 
 
  if (RecvSocket == INVALID_SOCKET) { 
      printf("WSASocket call failed with error: %ld\n", WSAGetLastError()); 
      WSACleanup(); 
      return 1; 
  } 
} 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.