4Àå echo_server_win.c ÄÚµå ¿¡·¯
ÃÑ ÆäÀÌÁö ¼ö : 3224

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



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

echo_server_win.c

Å×½ºÆ® °³¹ßÇß´ø Äڵ带 ¹®¼­·Î ¿Å±â¸é¼­ ¾Æ¿¹ ¾û¶×ÇÏ°Ô ¿Ã¶ó °£°Í °°½À´Ï´Ù. ÀÌ¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ¼öÁ¤ÇÕ´Ï´Ù.

001  #include <winsock2.h>
002  #include <stdio.h>
003  
004  #define MAX_PACKETLEN 1024
005  #define PORT 3500
006  
007  int main()
008  {
009    WSADATA wsaData;
010    SOCKET listen_s, client_s;
011    struct sockaddr_in server_addr, client_addr;
012    char szReceiveBuffer[MAX_PACKETLEN];
013    int readn, writen;
014    int len;
015  
016    if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
017    {
018      return 1;
019    }
020    listen_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
021    if(listen_s == INVALID_SOCKET)
022    {
023      return 1;
024    }
025   
026    ZeroMemory(&server_addr, sizeof(struct sockaddr_in));
027  
028    server_addr.sin_family = PF_INET;
029    server_addr.sin_port = htons(PORT);
030    server_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
031  
032    if(bind(listen_s, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR)
033    {
034      return 0;
035    }
036    if(SOCKET_ERROR == listen(listen_s, 5) == SOCKET_ERROR)
037    {
038      return 0;
039    }
040  
041  
042    while(1)
043    {
044      ZeroMemory(&client_addr, sizeof(struct sockaddr_in));
045      len = sizeof(struct sockaddr_in);
046      client_s = accept(listen_s, (struct sockaddr *)&client_addr, &len);
047      readn = recv(client_s, szReceiveBuffer, MAX_PACKETLEN, 0);
048      if(readn > 0)
049      {
050        writen = send(client_s, szReceiveBuffer, readn, 0); 
051      }
052      closesocket(client_s);
053    }
054    closesocket(listen_s);
055    WSACleanup();
056    return 0;
057  }
058  
5. accept ÇÔ¼ö·Î ±â´Ù¸± Æ÷Æ®¹øÈ£¸¦ 3500À¸·Î Á¤ÀÇÇÑ´Ù.

16. WSAStartup ÇÔ¼ö·Î À©¼ÓÀ» ·ÎµùÇÑ´Ù.

42 ~ 53. accept ÇÔ¼ö·Î Ŭ¶óÀÌ¾ðÆ®¸¦ ±â´Ù¸°´Ù. ¸¸¾à ¿¬°áµÈ´Ù¸é recvÇÔ¼ö·Î µ¥ÀÌÅ͸¦ Àаí sendÇÔ¼ö·Î Ŭ¶óÀÌ¾ðÆ®¿¡ Àç Àü¼ÛÇÑ´Ù. µ¥ÀÌÅÍ Àü¼Û ÈÄ closesocket ÇÔ¼ö¸¦ È£ÃâÇØ¼­ Ŭ¶óÀÌ¾ðÆ® ¿¬°áÀ» ²÷´Â´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.