ÇÁ·Î±×·¡¹Ö

 3206, 5/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   qaz4564
   c++ ¼ÒÄÏÇÁ·Î±×·¡¹Ö

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=6503 [º¹»ç]


±ÍÂúÀ¸½Ã´õ¶óµµ µµ¿ÍÁÖ¼¼¿ä ¤Ì¤Ì ¸îÀÏÀÌ °É·È½À´Ï´Ù.

ÇÁ·ÎÁ§Æ® ¼Ó¼º¿¡ [¸µÄ¿]>[ÀÔ·Â]>[Ãß°¡Á¾¼Ó¼º]>ws2_32.lib¸¦ ÇÏ°í ÄÄÆÄÀÏÀ» ÇÏ¿´½À´Ï´Ù.
server ¼Ò½º
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include <process.h>
#include <string.h>
#define BUFSIZE 512
HANDLE hthread;  //  ¾²·¹µå¸¦ Á¦¾î ÇϱâÀ§ÇÑ ÇÚµé
SOCKET client_sock;  // Åë½Å¿ë ¼ÒÄÏ
static unsigned WINAPI re()// ¸Þ¼¼Áö¸¦ º¸³»±â À§ÇÑ ÇÔ¼ö
{
  SOCKADDR_IN clientaddr;//Ŭ¶óÀ̾ðÆ®ÁÖ¼Ò
  int addrlen;
  char buf[BUFSIZE+1];
  int retval;
  addrlen = sizeof(clientaddr);
  SOCKET listen_sock = socket(AF_INET, SOCK_STREAM, 0);
  accept(listen_sock,(SOCKADDR *) &clientaddr, &addrlen);

//  µ¥ÀÌÅÍ ¹Þ±â
  do{
   ZeroMemory(buf, sizeof(buf));
   retval = recv(client_sock, buf, BUFSIZE, 0);
   if(retval == 0)
   return 0;
  
   // ¹ÞÀº µ¥ÀÌÅÍ Ãâ·Â
   if(retval != -1){
   buf[retval] = '\0';
   printf("\n[TCP/%s:%d]%d¹Þ¾Ñ½À´Ï´Ù %s\n[º¸³¾ µ¥ÀÌÅÍ]",inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port),retval, buf);
   }
  }while(1);
}
int main(int argc, char* argv[])
{
  int retval;
  // À©¼Ó ÃʱâÈ­
  WSADATA wsa;
  if(WSAStartup(MAKEWORD(2,2), &wsa) != 0)
  return -1;

  // socket(tcp/ip¸¦ ÀÌ¿ë(afÁÖ¼Òü°è),tcp¹æ½ÄÀÇ ½ºÆ®¸², ƯÁ¤ÇÁ·ÎÅäÄݼ³Á¤Àμö ´ëºÎºÐ0ÀÌ´Ù)
  SOCKET listen_sock = socket(AF_INET, SOCK_STREAM, 0);// ¼ÒÄϸ¸µé±â

  // bind() bind¶õ ¼­¹öÀÇ ¾ÆÀÌÇÇ,Æ÷Æ® ¸¦ ºÎ¿©Çϴ°Í
  SOCKADDR_IN serveraddr;
  ZeroMemory(&serveraddr, sizeof(serveraddr));
  serveraddr.sin_family = AF_INET;//µµ¸ÅÀÎ
  serveraddr.sin_port = htons(9000);
  serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //IPv4¿¡¼­´Â INADDR_ANY(¿ÍÀϵåÄ«µå) ÀÌ°í ÀÌ°ÍÀ¸·Î ¾ÆÀÌÇǸ¦ ¹Þ¾Æ¿Â´Ù
  bind(listen_sock, (SOCKADDR *)&serveraddr,sizeof(serveraddr));  
//    ¼ÒÄÏ     ÁÖ¼Ò   Å©±â
  // listen()
  listen(listen_sock, SOMAXCONN);//Ŭ¶óÀ̾ðÆ® ´ë±â »óŸ¦ ¸¸µë ,
         //µÎ¹ø¤Š ¸Å°³º¯¼ö °¡  ¹é·Î±× ¶ó´Â°ÍÀÌ°í ´ë±â°¡´ÉÇÑ ÃÖ´ë ¿¬°á°¹¼ö(³ÑÀ¸¸é ¿äû°ÅÀý)

  // µ¥ÀÌÅÍ Åë½Å¿¡ »ç¿ëÇÒ º¯¼ö
  SOCKADDR_IN clientaddr;//Ŭ¶óÀ̾ðÆ®ÁÖ¼Ò
  int addrlen;
  char buf[BUFSIZE+1];
  while(1){
   //accept()
  addrlen = sizeof(clientaddr);
  client_sock = accept(listen_sock,(SOCKADDR *) &clientaddr, &addrlen);//Ŭ¸®¾Æ¾ðÅÍ¿¡ ´ëÇÑ Á¤º¸¸¦ Ŭ¶óÀ̾ðÆ®¼ÒÄÏ¿¡ ³ÊÀ½
                   //¹Ýȯ°ª : ¿¬°áµÈ¼ÒÄÏ, Ŭ¶óÀ̾ðÆ®ÀÇ ÁÖ¼Ò, ±×°ÍÀÇ ±æÀÌ
   printf("\n[TCP ¼­¹ö] Ŭ¶óÀ̾ðÆ® Á¢¼Ó: IP ÁÖ¼Ò=%s, Æ÷Æ® ¹øÈ£=%d\n",inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port));
    unsigned id;
  // ¾²·¹µå ¸¸µé°í ¹Þ´Â ÇÔ¼ö¸¦ ¾²·¹µå¿¡¼­ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù
    //create ÇÔ¼öµµ ÀÖÁö¸¸ c++/c ¿¡¼­´Â µ¿ÀÛÀÌ Àß µÇÁö ¾Ê´Â´Ù.
    hthread = (HANDLE)_beginthreadex(NULL,0,(unsigned int (__stdcall*)(void*))re,NULL,0,&id);
  
    if(hthread ==0)
     puts("_beginthreadex error");
  
   // Ŭ¶óÀ̾ðÆ®¿Í µ¥ÀÌÅÍ Åë½Å
   while(1){
      // µ¥ÀÌÅÍ Åë½Å¿¡ »ç¿ëÇÒ º¯¼ö
   int len;
   // ¼­¹ö¿Í µ¥ÀÌÅÍ Åë½Å
   // µ¥ÀÌÅÍ ÀÔ·Â
   ZeroMemory(buf, sizeof(buf));// buf¸¦ ºñ¿öÁØ´Ù ÃʱâÈ­
   printf("\n[º¸³¾ µ¥ÀÌÅÍ]");
   if(fgets(buf, BUFSIZE+1, stdin) == NULL)
   break;
   // '\n' ¹®ÀÚ Á¦°Å
   len = strlen(buf);
   if(buf[len-1] == '\n')
   buf[len-1] = '\0';
   if(strlen(buf) == 0)
   break;
  
   retval = send(client_sock, buf, strlen(buf), 0); //º¸³»´Â ÇÔ¼ö ,¹Ýȯ°ªÀº ¹ÙÀÌÆ® ¼ö
  
   printf("[TCP ¼­¹ö] %d¹ÙÀÌÆ®¸¦ º¸³Â½À´Ï´Ù.\n", retval);
   }
  closesocket(client_sock);
  printf("[TCP ¼­¹ö] Ŭ¶óÀ̾ðÆ® Á¾·á: IP ÁÖ¼Ò=%s, Æ÷Æ® ¹øÈ£=%d\n",inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port));
  }
  closesocket(listen_sock);
  // À©¼Ó Á¾·á
  WSACleanup();
  return 0;
}



//////////////////////////////////////////////////////////////

client ¼Ò½º
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#define BUFSIZE 512
int main(int argc, char* argv[])
{
int retval;
int ret;
// À©¼Ó ÃʱâÈ­, ¼ÒĹ ÃʱâÈ­
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,2), &wsa) != 0)
return -1;
// socket()
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);// ¼ÒÄϸ¸µé±â
// connect() ¼­¹ö·Î ¿¬°á
SOCKADDR_IN serveraddr;
serveraddr.sin_family = AF_INET; // TCP/IP¸¦ »ç¿ë
serveraddr.sin_port = htons(9000);
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");//¼­¹öÀÇ IP ÁÖ¼Ò
retval = connect(sock, (SOCKADDR *)&serveraddr,sizeof(serveraddr));


SOCKADDR_IN clientaddr;//Ŭ¶óÀ̾ðÆ®ÁÖ¼Ò
  int addrlen;
// µ¥ÀÌÅÍ Åë½Å¿¡ »ç¿ëÇÒ º¯¼ö
char buf[BUFSIZE+1];
int len;
// ¼­¹ö¿Í µ¥ÀÌÅÍ Åë½Å
while(1){
  addrlen = sizeof(clientaddr);
  SOCKET n_sok;
  
// µ¥ÀÌÅÍ ÀÔ·Â
ZeroMemory(buf, sizeof(buf));
printf("\n[º¸³¾ µ¥ÀÌÅÍ]");
if(fgets(buf, BUFSIZE+1, stdin) == NULL)
  break;
// '\n' ¹®ÀÚ Á¦°Å
len = strlen(buf);
if(buf[len-1] == '\n')
buf[len-1] = '\0';
if(strlen(buf) == 0)
  break;
// µ¥ÀÌÅÍ º¸³»±â
retval = send(n_sok, buf, strlen(buf), 0);
printf("[TCP Ŭ¶óÀ̾ðÆ®] %d¹ÙÀÌÆ®¸¦ º¸³Â½À´Ï´Ù.\n", retval);
// µ¥ÀÌÅÍ ¹Þ±â
ZeroMemory(buf, sizeof(buf));
ret = recv(n_sok, buf, BUFSIZE, 0);

if(ret == 0)
break;
// ¹ÞÀº µ¥ÀÌÅÍ Ãâ·Â
buf[ret] = '\0';
printf("[TCP Ŭ¶óÀ̾ðÆ®] %d¹ÙÀÌÆ®¸¦ ¹Þ¾Ò½À´Ï´Ù.\n", ret);
printf("[¹ÞÀº µ¥ÀÌÅÍ] %s\n", buf);
}
  // closesocket()
closesocket(sock);
// À©¼Ó Á¾·á
WSACleanup();
return 0;
}


¼­·Î ¹®ÀÚ¿­À» ÁÖ°í ¹Þ´Â Åë½Å ÇÁ·Î±×·¥ ÀÔ´Ï´Ù.
µ¥ÀÌÅ͸¦ º¸³¾ ¶§´Â ¼­¹öµç Ŭ¶óÀ̾ðÆ®µç ¸ÕÀú °¡´ÉÇÏ°í, Ŭ¶óÀ̾ðÆ®´Â µ¥ÀÌÅ͸¦ º¸³»¾ß ¹Þ±â°¡ °¡´É ÇÕ´Ï´Ù.
¹®Á¦´Â ÇÑ ÄÄÇ»ÅÍ¿¡¼­´Â Àß µÇÁö¸¸ ¼­·Î ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­ Ŭ¶óÀ̾ðÆ®¿¡ ÀÖ´Â IPÁÖ¼Ò¸¦ ¼­¹ö ÄÄÇ»ÅÍ¿¡ ¸Â°Ô º¯°æ ÈÄ  ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®¸¦ °¢°¢ ½ÇÇà ½ÃÅ°¸é µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.
¹«¾ùÀ̹®Á¦Àϱî¿ä µµ¿ÍÁÖ¼¼¿ä

  Hit : 7194     Date : 2015/01/14 05:25



    
3126   ¹®¼­¾ÏÈ£ Ǫ´Â¹ý??[1]     laclarte
01/16 7425
3125   CÇÁ·Î±×·¡¹Ö ´äº¯Á»..[1]     knagek
09/04 7425
3124   MFC ¦¸ÂÃ߱⠰ÔÀÓ.     hiÂ𱸾ä
05/10 7412
3123   C¾ð¾î ÇÁ·Î±×·¡¹Ö µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð[2]     gxcolin
05/17 7372
3122   ¸ð¸£´Â°Ô À־¿©~~~~~c¾ð¾î Ã¥º¸´Ù°¡¿©~~[3]     mintsky1024
12/26 7333
3121   [C¾ð¾î]µÎ ÀÚ¸® ¼ýÀÚ ÀÚ¸´¼ö ¹Ù²Ù±â[1]     tfvarsity
03/19 7328
3120   OllyDBG »ç¿ë¹ý ¾Ë·ÁÁÖ¼¼¿ë~!!![3]     ¾Æ¸£ºô
09/26 7320
3119   [c¾ð¾î] Stack around the variable 'x' was corrupted[1]     yj6393
10/13 7263
3118   C¾ð¾î ÃÖ´ë°ø¾à¼ö ¹®Á¦[2]     so072941594
07/17 7257
3117   visual c++ 6.0 ¾îµð¼­´Ù¿î¹Þ³ª¿ä??[5]     1234321
02/01 7250
3116   TCP/IP ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ¿À·ù[3]     whtjdwls151
07/13 7203
  c++ ¼ÒÄÏÇÁ·Î±×·¡¹Ö     qaz4564
01/14 7193
3114   °£´ÜÇÑ °ÔÀÓ¼Ò½º C++·Î ¸¸µå´Â °Å..[2]     dmsal154
09/06 7166
3113   visual studio 2010 »ç¿ë¹ýÁ» °¥ÄÑ ÁÖ¼¼¿ä[2]     gkswls123
08/06 7068
3112   ÇÑ ÇÁ·ÎÁ§Æ®¿¡ ¿©·¯ ¼Ò½ºÄڵ带 µÑ¼ö¾ø³ª¿ä?[3]     SeungAh
03/01 7048
3111   ¸®´ª½º c¿Í À©µµ¿ì cÀÇ Â÷ÀÌÁ¡À» ¾Ë·ÁÁÖ¼¼¿ä.,..[1]     Ä«ÀÌÀú9
09/04 7043
3110   ¾È³çÇϼ¼¿ä? ¸ÞƾÀ̶ó´Â °ÔÀÓ¿¡ ¸ÅÅ©·Î ¹®Àǵ帳´Ï´Ù.[6]     ¸ÞƾÇØÄ¿
06/30 7040
3109   [C¾ð¾î] Çì´õÆÄÀÏ, #ifndef, #define Áú¹®ÀÌ¿ä.[2]     ¿µ¿øÇÑ°øºÎ
06/11 6981
3108     [re] ºÒ¹ýÀÎÁö ¾Ë·ÁÁÖ¼¼¿ä     admin
09/05 6939
3107   [C¾ð¾î]ÆÄÀÏÀÔÃâ·Â¿¡¼­ fwrite, fclose Áú¹®ÀÔ´Ï´Ù.[3]     bak405
12/12 6937
[1][2][3][4] 5 [6][7][8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org