ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. bind
¼ÒÄÏ¿¡ ÁÖ¼Ò, ÇÁ·ÎÅäÄÝ, Æ÷Æ®¸¦ ÇÒ´çÇÑ´Ù. file descriptor ´ë½Å¿¡ SOCKET°´Ã¼¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇϰí BSD socket¿Í µ¿ÀÏÇÏ´Ù. syntaxint bind(
SOCKET s,
const struct sockaddr *name,
int namelen
);
ÀÎÀÚ
¸®Åϰª
¼º°øÇßÀ» °æ¿ì 0À» ¸®ÅÏÇÑ´Ù. ½ÇÆÐÇßÀ» °æ¿ì SOCKET_ERRORÀ» ¸®ÅÏÇϰí error code¸¦ ¼³Á¤ÇÑ´Ù. WSAGetLastError ÇÔ¼ö¸¦ È£ÃâÇØ¼ error code °ªÀ» °¡Á®¿Ã ¼ö ÀÖ´Ù.
¼³¸í
bind ÇÔ¼ö´Â listen(),connect() È£ÃâÀü¿¡ »ç¿ëµÇ¸ç, ¿¬°áµÇÁö ¾ÊÀº ¼ÒÄÏÀ» ÇÊ¿ä·Î ÇÑ´Ù. bind´Â ÀϹÝÀûÀ¸·Î ¿¬°áÁöÇâ(stream) ȤÀº ºñ¿¬°áÁöÇâ(connectless) datagram ¼ÒÄÏÀ» À§Çؼ »ç¿ëµÈ´Ù. À̿ܿ¡µµ raw socket¿¡µµ »ç¿ëµÈ´Ù.
´ë°ÔÀÇ °æ¿ì ¼¹öÇÁ·Î±×·¥¿¡¼ »ç¿ëµÇ´Âµ¥, Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥¿¡¼ »ç¿ëµÇ´Â °æ¿ìµµ ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼´Â ÁÖ·Î, port¸¦ ¸í½ÃÀûÀ¸·Î ÇÒ´çÇØÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù.
¼ÒÄÏ¿¡ ÇÒ´çµÇ´Â À̸§ - name -Àº Å©°Ô ¼¼°¡Áö·Î ±¸ºÐÀÌ µÈ´Ù. ÁÖ¼Òü°è, È£½ºÆ®ÁÖ¼Ò ±×¸®°í Æ÷Æ®¹øÈ£ÀÌ´Ù. sockaddr ±¸Á¶Ã¼¿¡¼ óÀ½ 2byteÀÎ sa_family°¡ ÁÖ¼Òü°è¸¦ °¡¸®Å°°Ô µÇ´Âµ¥, ¼ÒÄÏÀ» »ý¼ºÇÒ ¶§ »ç¿ëÇß´ø ÁÖ¼Òü°è¿Í ÀÏÄ¡ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ» °æ¿ì WSAEFAULT ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
¸¸¾à PORT ¹øÈ£¸¦ 0À¸·Î ÇÒ´çÇϸé, ¼ºñ½º ÇÁ·Î¹ÙÀÌ´õ´Â (¸®´ª½ºÀÇ °æ¿ì¿¡´Â Ä¿³ÎÀÌ) 1024 ~ 5000 »çÀÌÀÇ °ªÀ» ÀÓÀÇ·Î ÇÒ´çÇÑ´Ù. º¸Åë Ŭ¶óÀÌ¾ðÆ®´Â PORT¸¦ 0À¸·Î ÇØ¼ ÀÓÀÇ·Î Æ÷Æ®¸¦ ÇÒ´ç¹Þ¾Æ¼ »ç¿ëÇϸç, ¼¹ö ÇÁ·Î±×·¥À» PORT¸¦ ¸í½ÃÇØ¼ »ç¿ëÇÑ´Ù. ¼¹öÀÇ °æ¿ì¿¡´Â ¿¬°á¿äûÀ» Çϴ Ŭ¶óÀÌ¾ðÆ®°¡ Æ÷Æ®¹øÈ£¸¦ ¾Ë°í ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. Ŭ¶óÀ̾ðÆ®ÀÇ °æ¿ì ¸í½ÃÇØ¼ »ç¿ëÇϱⰡ ¾î·Æ´Ù. ¿Ö³ÄÇÏ¸é ¸í½ÃÇÏ·Á´Â Æ÷Æ®°¡ ÀÌ¹Ì ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼ »ç¿ëµÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
¿¹Á¦#include <winsock.h> #include <stdio.h> #define MAX_PACKETLEN 512 #define PORT 5552 int main() { WSADATA wsaData; int status; int SockLen; int Readn,Writen; SOCKET EndpointSocket, ClientSocket; struct sockaddr_in SockInfo, ClientSockInfo; char ReadBuffer[MAX_PACKETLEN]; if(WSAStartup(MAKEWORD(2,2),&wsaData)!= 0) { printf("error\r\n"); return 0; } EndpointSocket = socket( AF_INET, SOCK_STREAM, 0 ); if( EndpointSocket == INVALID_SOCKET ) return 1; printf("Success socket create\r\n"); ZeroMemory(&SockInfo, sizeof( struct sockaddr_in )); SockInfo.sin_family = AF_INET; SockInfo.sin_port = htons( PORT ); SockInfo.sin_addr.S_un.S_addr = htonl(INADDR_ANY); status = bind( EndpointSocket, (struct sockaddr*)&SockInfo, sizeof( struct sockaddr_in) ); if( status == SOCKET_ERROR) { printf("Bind Error\n"); return 0; } if( SOCKET_ERROR == listen( EndpointSocket, 5 )) { printf("listen Error\n"); return 0; } while(1) { ZeroMemory( &ClientSockInfo, sizeof( struct sockaddr_in ) ); SockLen = sizeof(struct sockaddr_in); ClientSocket = accept( EndpointSocket, (struct sockaddr*)&ClientSockInfo, &SockLen ); if(ClientSocket == INVALID_SOCKET) { printf("Accept Error\n"); closesocket(EndpointSocket); WSACleanup(); return 1; } printf("Accept Client\n"); Readn = recv( ClientSocket, ReadBuffer, MAX_PACKETLEN,0 ); if( Readn > 0 ) { Writen = send( ClientSocket, ReadBuffer, Readn, 0 ); } else { printf("read Error\n"); } closesocket(ClientSocket); } closesocket( EndpointSocket ); WSACleanup(); return 0; } |
|
||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|