À©¼Ó API : WSASend - ¼ÒÄÏÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÑ´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¸Þ´º¾ó>winsock API>WSASend



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

WSASend

¿¬°á ¼ÒÄÏÀ¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÑ´Ù.
int WSASend( 
  __in   SOCKET s, 
  __in   LPWSABUF lpBuffers, 
  __in   DWORD dwBufferCount, 
  __out  LPDWORD lpNumberOfBytesSent, 
  __in   DWORD dwFlags, 
  __in   LPWSAOVERLAPPED lpOverlapped, 
  __in   LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine 
); 
 

¸Å°³ º¯¼ö

  • s
    ¿¬°á ¼ÒÄÏÀ» °¡¸®Å°´Â ¼ÒÄÏ ÁöÁ¤ ¹øÈ£
  • lpBuffers
    WSABUF±¸Á¶Ã¼ ¹è¿­ÀÇ Æ÷ÀÎÅÍ·Î °¢°¢ÀÇ WSABUF ±¸Á¶Ã¼´Â ¹öÆÛ¿Í ¹öÆÛÀÇ Å©±â¸¦ °¡¸®Å²´Ù.
  • dwBufferCount
    lpBuffers¿¡ ÀÖ´Â WSABUF±¸Á¶Ã¼ÀÇ °³¼ö
  • lpNumberOfBytesSent
    ÇÔ¼öÀÇ È£Ãâ·Î Àü¼ÛµÈ µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ³ä°ÜÁØ´Ù. ¸¸¾à ¸Å°³ º¯¼ö lpOverlapped°¡ NULLÀÌ ¾Æ´Ï¶ó¸é, ÀÌ ¸Å°³ º¯¼öÀÇ °ªÀº NULL·Î ÇØ¾ß ÇÑ´Ù. ±×·¡¾ß (ÀáÀçÀûÀÎ)À߸øµÈ ¹ÝȯÀ» ÇÇÇÒ ¼ö ÀÖ´Ù.
  • dwFlags
    WSASend ÇÔ¼ö¸¦ ¾î¶² ¹æ½ÄÀ¸·Î È£Ãâ ÇÒ°ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù.
  • lpOverlapped
    WSAOVERLAPPED±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ´Ù. ºñ (overlapped)Áßø ¼ÒÄÏ¿¡¼­´Â ¹«½ÃµÈ´Ù.
  • lpCompletionRoutine
    µ¥ÀÌÅÍ Àü¼ÛÀÌ ¿Ï·á µÇ¾úÀ» ¶§ È£ÃâÇÒ ¿Ï·á ·çƾ (completion routine)ÀÇ Æ÷ÀÎÅÍ. ºñ Áßø ¼ÒÄÏ¿¡¼­´Â ¹«½Ã µÈ´Ù.

¹Ýȯ °ª

µ¥ÀÌÅÍ Àü¼ÛÀ» ¿Ï·áÇß´Ù¸é 0À» ¹ÝȯÇÑ´Ù. ÀÌ °æ¿ì ¿Ï·á ·çƾÀº È£Ãâ ¾²·¹µå°¡ ¹ÝÀÀÇÒ ¼ö ÀÖ´Â »óÅ·ΠȣÃâÇϱâ À§ÇÑ Áغñ¸¦ °®Ãß¾ú´Ù°í º¼ ¼ö ÀÖ´Ù. ½ÇÆÐÇÒ °æ¿ì SOCKET_ERROR¸¦ ¹ÝȯÇÑ´Ù. ¿¡·¯ ÄÚµå´Â WSAGetLastError ÇÔ¼ö·Î °¡Á®¿Ã ¼ö ÀÖ´Ù. ¿¡·¯ Äڵ尡 WSA_IO_PENDINGÀ̸é Áßø ¿¬»êÀ» À§ÇÑ ÃʱâÈ­ ÀÛ¾÷ÀÌ ¼º°øÀûÀ¸·Î ÁøÇà µÇ¾úÀ¸¸ç, ¿Ï·á¿¡ ´ëÇÑ ÃøÁ¤Àº ³ªÁß¿¡ ÀÌ·ç¾îÁú °ÍÀÓÀ» ÀǹÌÇÑ´Ù.

¿¡·¯ ÄÚµå ¿¡·¯ °ª ¼³¸í
WSAECONNABORTED 10053 ŸÀӾƿô ȤÀº »ó´ë¹æÀÇ Á¢¼ÓÁ¾·áµé°ú °°Àº ¼ÒÇÁÆ®¿þ¾îÀûÀÎ ¹®Á¦·Î ¿¬°áÀÌ ²÷°åÀ½.
WSAEFAULT 10014 À߸øµÈ ÁÖ¼Ò¸¦ »ç¿ëÇßÀ½
WSAECONNRESET 10054 ¿¬°áÀÌ ¿ø°Ý È£½ºÆ®¿¡ ÀÇÇØ Àç¼³Á¤µÇ¾úÀ½.
WSAEINTR 10004 WSACancelBlockingCall()¿¡ ÀÇÇØ ºí·ÏÈ­ È£ÃâÀÌ Ãë¼Ò: Interrupted system call
WSAEINPROGRESS 10036 ºí·ÏÈ­ ÇÔ¼ö°¡ ÁøÇàµÇ´Â µ¿¾È ºÎÀûÀýÇÑ À©¼Ó APIÇÔ¼ö°¡ È£Ãâ.
WSAEINVAL 10022 ¹ÙÀεù ½ÇÆÐ. ÀÌ¹Ì bindµÈ ¼ÒÄÏ¿¡ ¹ÙÀεåÇϰųª ÁÖ¼Òü°è°¡ ÀϰüÀûÀÌÁö ¾ÊÀ» ¶§
WSAEMSGSIZE 10040 ¼Û¼ö½Å¿¡ »ç¿ëµÈ µ¥ÀÌÅͰ¡ ¹öÆÛÀÇ Å©±â¸¦ ÃʰúÇØ¼­ Å©±â¿¡ ¸Â°Ô Àß·ÈÀ½
WSAENETDOWN 10050 ³×Æ®¿öÅ© ¼­ºê ½Ã½ºÅÛ¿¡ ¹®Á¦°¡ ÀÖÀ½. ³×Æ®¿öÅ© Á¢¼Ó ²÷±èµî.
WSAENETRESET 10052 ³×Æ®¿öÅ© Àç¼³Á¤À¸·Î ¿¬°áÀÌ ²÷¾îÁ³À½.
WSAENOBUFS 10055 ³²¾ÆÀÖ´Â ¹öÆÛ°ø°£ÀÌ ¾ø¾î¼­ ¼ÒÄÏÀ» »ç¿ëÇÒ ¼ö ¾øÀ½
WSAENOTCONN 10057 ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏÀÓ. ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏ¿¡ ÀÐ°í ¾²´Â °æ¿ì
WSAENOTSOCK 10038 À߸øµÈ ¼ÒÄϱâ¼úÀÚ¸¦ »ç¿ëÇßÀ½
WSAEOPNOTSUPP 10045 ¼ÒÄÏÀÌ Áö¿øÇÏÁö ¾Ê´Â ¸í·ÉÀ» »ç¿ëÇßÀ½. listen()ÇÔ¼ö¸¦ µ¥ÀÌÅͱ׷¥ Åë½Å (SO_DGRAM)¿¡¼­ È£Ãâ
WSAESHUTDOWN 10058 ¼ÒÄÏÀÌ Á¾·áµÇ¾úÀ½. Á¾·áµÈ ¼ÒÄÏ¿¡ µ¥ÀÌÅ͸¦ ÀÐ°í ¾²·Á °æ¿ì
WSAEWOULDBLOCK 10035 ºñºÀ¼â¸ðµå¿¡ ÀÖ´Â ¼ÒÄÏ¿¡ ºÀ¼â ¸í·ÂÀ» ¿äû
WSANOTINITIALISED 10093 WSAStartup() ÇÔ¼ö°¡ ¼º°øÀûÀ¸·Î ½ÇÇàµÇÁö ¾ÊÀº »óȲ¿¡¼­ À©¼Ó ÇÔ¼ö¸¦ È£ÃâÇßÀ» ¶§
WSA_IO_PENDING 997 Overlapped ¿¬»êÀº ³ªÁß¿¡ ¿Ï·áµÉ °ÍÀÌ´Ù. Áßø ¿¬»êÀ» À§ÇÑ Áغñ°¡ µÇ¾úÀ¸³ª, Áï½Ã ¿Ï·áµÇÁö ¾Ê¾ÒÀ» °æ¿ì¹ß»ý
WSA_OPERATION_ABORTED 995 overlapped ¿¬»êÀÌ Áß´Ü µÇ¾ú´Ù.

¼³¸í

WSASend ÇÔ¼ö´Â sendÇÔ¼öÀÇ È®Àå ÇÔ¼ö·Î sendÀÇ ±â´ÉÀ» ¸ðµÎ Áö¿øÇϸç, ¾Æ·¡ÀÇ ±â´ÉÀÌ Ãß°¡µÇ¾î ÀÖ´Ù.
  1. Áßø ¿¬»êÀ» ÇÒ ¼ö ÀÖ´Ù.
  2. ¿©·¯ °³ÀÇ Àü¼Û ¹öÆÛ¸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Ù.

WSASend ÇÔ¼ö´Â ¿¬°á ÁöÇâ ¼ÒÄÏ¿¡¼­ Çϳª ÀÌ»óÀÇ µ¥ÀÌÅÍ ¹öÆÛ¸¦ Àü¼ÛÇϱâ À§ÇØ »ç¿ëÇÏ´Â ÇÔ¼ö´Ù. ÀÌ ÇÔ¼ö¸¦ ºñ ¿¬°á ÁöÇâ ¼ÒÄÏ¿¡¼­ »ç¿ëÇϱâ À§Çؼ­´Â connect³ª WSAConnect ÇÔ¼ö·Î »ó´ë¹æ ÀÎÅͳÝÁÖ¼Ò Á¤º¸°¡ ¹ÙÀεù µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

socket ÇÔ¼ö·Î ¸¸µé¾îÁø ¼ÒÄÏÀº ±âº»ÀûÀ¸·Î Áßø Ư¼ºÀ» °¡Áö°í ÀÖ´Ù. WSASocket ÇÔ¼ö·Î ¼ÒÄÏÀ» ¸¸µç´Ù¸é WSA_FLAG_OVERLAPPEDºñÆ®¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¼ÒÄÏÀÌ Áßø Ư¼ºÀ» °¡Áö¸é WSASend´Â Áßø ÀÔÃâ·Â ¿¬»êÀ» ¼öÇàÇÑ´Ù. ¸¸¾à À̶§ lpOverlapped ¿Í lpCompletionRoutine°¡ NULL À̶ó¸é Áßø ÀÔÃâ·ÂÀº ¹«½ÃµÇ°í sendÇÔ¼ö¿Í µ¿ÀÏÇÏ°Ô ÀÛµ¿ÇÑ´Ù.

ºñ Áßø ¼ÒÄÏ¿¡¼­ lpOverlapped¿Í lpCompletionRoutine´Â ¹«½ÃµÇ¸ç ºÀ¼â sendÇÔ¼ö¿Í µ¿ÀÏÇÏ°Ô ÀÛµ¿ÇÑ´Ù.

dwFlagsÀÇ »ç¿ë

dwFlags´Â ¼ÒÄÏÀÇ ÀÛµ¿ ¹æ½ÄÀ» °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.
MSG_DONTROUTE ¶ó¿ìÆÃ Á¤º¸¸¦ ¾²Áö ¾Ê´Â´Ù. ·ÎÄà ³×Æ®¿öÅ© Åë½Å¸¸À» Çϰڴٴ ÀǹÌÁö¸¸, À©µµ ¼ÒÄÏÀº ÀÌ °ªÀ» ¹«½ÃÇÑ´Ù.
MSG_OOB OOB(±ä±Þ µ¥ÀÌÅÍ)¸¦ Àü¼ÛÇÑ´Ù. ´ÜÁö ¿¬°á ÁöÇâ ¼ÒÄÏ (SOCK_STREAM)¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
MSG_PARTIAL lpbuffers ¸Å°³ º¯¼ö°¡ ºÎºÐÀûÀÎ ¸Þ½ÃÁö¸¸ ´ãµµ·Ï ÇÑ´Ù.

Áßø ÀÔÃâ·Â

¸¸¾à Áßø ¿¬»êÀÌ ¹Ù·Î ¿Ï·áµÇ¸é WSASend ÇÔ¼ö´Â 0À» ¹ÝȯÇϰí Àü¼ÛÇÑ µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® Å©±â¸¦ lpNumberOfBytesSend °ªÀ¸·Î ¼³Á¤ÇÑ´Ù. ¸¸¾à Áßø ¿¬»êÀÌ ¼º°øÀûÀ¸·Î ÃʱâÈ­ µÇ°í ¾ÆÁ÷ ¿Ï·áµÇÁö ¾Ê¾Ò´Ù¸é, WSASend´Â SOCKET_ERROR¸¦ ¹ÝȯÇÑ´Ù. Áßø ¿¬»êÀÌ ³ªÁß¿¡ ÀÌ·ç¾îÁú °ÍÀ̶ó´Â °ÍÀº WSA_IO_PENDING¿¡·¯ ÄÚµå·Î È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì lpNumberOfBytesSend °ªÀº ¼öÁ¤µÇÁö ¾Ê´Â´Ù.

WSASend ÇÔ¼ö´Â ÀÌÀü¿¡ È£ÃâÇÑ WSARecv, WSARecvFrom, WSASend, WSASendToÇÔ¼öÀÇ ¿Ï·á ÇÔ¼ö¿¡¼­ È£ÃâÇÒ ¼ö ÀÖ´Ù.

¸¸¾à ¿©·¯ °³ÀÇ ÀÔÃâ·ÂÀÌ µ¿½Ã¿¡ ÀϾ ´Ù¸é, °¢°¢ÀÇ ¿¬»êÀº ¼­·Î ´Ù¸¥ WSAOVERLAPPED ±¸Á¶Ã¼¸¦ ÂüÁ¶ÇØ¾ß ÇÑ´Ù.

¿Ï·á ·çƾÀº À©µµ ÆÄÀÏ ÀÔÃâ·ÂÀÇ ¿Ï·á ·çƾ°ú °°Àº ±ÔÄ¢À» µû¸¥´Ù. ¿Ï·á ·çƾÀº ½º·¹µå°¡ alertable »óŰ¡ µÇÁö ¾ÊÀ» ¶§±îÁö ´ë±âÇÏ°Ô µÈ´Ù.

¿Ï·á ·çƾÀÇ ÇÁ·ÎÅä ŸÀÔÀº ´ÙÀ½°ú °°´Ù.
void CALLBACK CompletionROUTINE( 
  IN DWORD dwError, 
  IN DWORD cbTransferred, 
  IN LPWSAOVERLAPPED lpOverlapped, 
  IN DWORD dwFlags 
); 
 

¿¹Á¦




º¸³½ Æ®·¢¹é Á¤º¸
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.