WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


TCP/IP ¸¦ »ç¿ëÇÑ ³×Æ®¿öÅ© Åë½Å



TCP¼ÒÄϸ¦ »ç¿ëÇÑ ³×Æ®¿öÅ© Åë½ÅÀ» Çϱ⿡´Â

TCP ³×Æ®¿öÅ© Åë½ÅÀº Ŭ¶óÀ̾ðÆ®, ¼­¹ö Á¢¼Ó ÁöÇâÀÇ Åë½ÅÀ» ½ÇÇàÇÕ´Ï´Ù. ¼­¹öÃø¼ÒÄÏ WSCvssocket Ŭ·¡½º´Â Ŭ¶óÀ̾ðÆ®Ãø¼ÒÄÏ WSCvcsocket ¿¡¼­ÀÇ Á¢¼ÓÀ» Á¢¼öÇÕ´Ï´Ù.

º¸Åë TCP ¼ÒÄϸ¦ C/C++ ¾ð¾î»ó¿¡¼­ ÀÌ¿ëÇÒ °æ¿ì accept ³ª listen, connect µîÀ» »ç¿ëÇؼ­ Á¢¼ÓÀ» ÇÏÁö¸¸ WideStudio ¿¡¼­´Â TCP ¼ÒÄÏÀÇ Á¢¼Ó¿¡ °üÇÑ Ã³¸®´Â ºÎÇ°³»ºÎ¿¡¼­ ÀÚµ¿ÀûÀ¸·Î ½ÇÇàÇÏ°í ºÎÇ°ÀÇ »ç¿ëÀÚ¿¡´Â ÀºÆóµÇ¿©À־ ±×¿¡ °üÇÑ Ã³¸®´Â ±â¼úÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

TCP ¼ÒÄÏ ºÎÇ°Àº IP ÁÖ¼Ò³ª PORT ÀÇ ¼Ó¼ºÀ» °¡Á®ÀÖ°í ¼³Á¤Çϴ°ͻÓÀ¸·Î ±â´ÉÇϵµ·Ï µÇ¿©ÀÖ°í ¼ÒÄÏ ºÎÇ°ÀÇ »ç¿ëÀÚ´Â ´Ü TCP ¼ÒÄÏ ºÎÇ°¿¡ ´ëÇؼ­ µ¥ÀÌÅÍÀÇ ¼Û¼ö½ÅÀ» ½ÇÇàÇÕ´Ï´Ù. TCP ¼ÒÄÏ ºÎÇ°¿¡´Â Á¢¼ÓÇÒÃø(Ŭ¶óÀ̾ðÆ®Ãø)ÀÇ Á¢¼ÓÀ» ¼öÁýÇÒÃø(¼­¹öÃø)ÀÌ ÀÖ½À´Ï´Ù.

Ŭ¶óÀ̾ðÆ®Ãø°ú ¼­¹öÃø¿¡¼­´Â ÁÖ·Î Á¢¼ÓÇÒ °æ¿ìÀÇ µ¿ÀÛÀÌ ´Ù¸¨´Ï´Ù. Ŭ¶óÀ̾ðÆ®ÃøÀº ³×Æ®¿öÅ©»ó¿¡Àִ ƯÁ¤ÀÇ ÁÖ¼Ò¿Í Á¢¼Ó±¸¿¡ ÀüÀçÇÏ´Â ¼­¹ö¿¡ Á¢¼ÓÇÏ·Î °¡´Â°Í¿¡ ´ëÇؼ­ ¼­¹öÃøÀº Ŭ¶óÀ̾ðÆ®¿¡¼­ Á¢¼ÓµÇ´Â°ÍÀ» ±â´Ù¸³´Ï´Ù.

µû¶ó¼­ TCP Åë½ÅÀ» ÇÒ °æ¿ì, WSCvcsocket (Ŭ¶óÀ̾ðÆ®Ãø)Àº °ð Á¢¼Ó´ë±âÇÏ°íÀÖ´Â WSCvssocket (¼­¹öÃø)¿¡ Á¢¼ÓÇÏ¿©¾ßÇÕ´Ï´Ù.

Ŭ¶óÀ̾ðÆ®Ãø¿¡ À־ÀÇ ¼Ó¼ºÀÇ ¼³Á¤Àº WSNip ¿¡ Á¢¼ÓÇÒ ¼­¹öÀÇTCP/IP ÁÖ¼Ò¸¦ ÁöÁ¤Çؼ­ WSNport ¿¡ »ó´ëÃø ¼­¹öÀÇ ¼ÒÄÏÀÇ Á¢¼Ó±¸¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¼­¹öÃø¿¡ À־ÀÇ ¼Ó¼ºÀÇ ¼³Á¤Àº WSNport ÀÇ ¼öÁ¢¿ëÀÇ ¼ÒÄÏÀÇ Á¢¼Ó±¸¸¦ ÁöÁ¤Çؼ­ WSNrunning ¸¦ ¿Â·Î ¼³Á¤ÇÕ´Ï´Ù. WSNip ¿¡´Â º¸Åë ƯÈ÷ ¼³Á¤À» ¾ÈÇÏÁö¸¸ Ȥ½Ã °°Àº ¸Ó½Å¿¡ º¹¼öÀÇ ÁÖ¼Ò°¡ Á¸ÀçÇÏ¿© ±× ÁÖ¼Ò¼Ó¿¡ Á¢¼öÇÒ ÁÖ¼Ò¸¦ ƯÁ¤ÇÒ °æ¿ì¸¸ WSNip ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

Ŭ¶óÀ̾ðÆ®Ãø¿¡¼­ WSCvcsocket::exec ¸Þ¼­µå¸¦ ½ÇÇàÇÔÀ¸·Î¼­ ¼­¹öÃøÀÇ WSCvssocket ¿¡ Á¢¼ÓÀÌ µË´Ï´Ù. Á¢¼ÓÀÌ ½ÇÇàµÇ¸é Ŭ¶óÀ̾ðÆ®Ãø, ¼­¹öÃø »ó¹æ¿¡¼­ ACITVATE À̺¥Æ®°¡ ¹ß»ýÇÏ¸ç ±âµ¿µÇ´Â À̺¥Æ® ÇÁ·Î½ÃÀú¿¡¼­ Åë½ÅÀ» ½ÇÇàÇÕ´Ï´Ù.

Á¢¼Ó¿¡ ¼º°øÇÑ °æ¿ì ACTIVATE ·Î ±âµ¿µÇ´Â À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ Å¬¶óÀ̾ðÆ®Ãø µ¥ÀÌÅͼۼö½ÅÀÇ »ùÇÃÀÔ´Ï´Ù.

#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCvcsocket.h>

void com_ep(WSCbase* object){
  //do something...
  WSCvcsocket* sock = (WSCvcsocket*)object->cast("WSCvcsocket");
  char buffer[128];
  sprintf(buffer,"test!!! %d",cnt);
  cnt++;

  //send data;
  long send_len = sock->write((WSCuchar*)buffer,128);
  if (send_len == 128){
    //success! do something..
  }else{
    //error!
    return;
  } 

  //receive data;
  buffer[0] = 0;
  long recv_len = sock->read((WSCuchar*)buffer,128);
  if (recv_len == 128){
    //success! do something..
  }else{
    //error!
    return;
  } 
}
static WSCfunctionRegister  op("com_ep",(void*)com_ep);

´ÙÀ½¿¡ Á¢¼ÓÈ®¸³½Ã¿¡ ACTIVATE ·Î ±âµ¿µÇ´Â ¼­¹öÃøÀÇ µ¥ÀÌÅÍ ¼Û¼ö½Å ÇÁ·Î½ÃÀúÀÇ »ùÇÃÀÔ´Ï´Ù.

#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCvssocket.h>

void com_ep(WSCbase* object){
  //do something...
  WSCvssocket* obj = (WSCvssocket*)object->cast("WSCvssocket");
  char buffer[128];

  //receive data:
  // Ŭ¶óÀ̾ðÆ®¿¡¼­ÀÇ µ¥ÀÌÅÍ°¡ buffer ¿¡ °Ý³³
  obj->read((WSCuchar*)buffer,128);

  //send data:
  // Ŭ¶óÀ̾ðÆ®¿¡¼­ÀÇ µ¥ÀÌÅ͸¦ buffer ¿¡ °Ý³³ÇÏ¿© ¼Û½Å.
  strcpy(buffer,"send data...");
  obj->write((WSCuchar*)buffer,128);
}
static WSCfunctionRegister  op("com_ep",(void*)com_ep);

´ÙÀ½¿¡ Á¢¼ÓÈ®¸³Çؼ­ µ¥ÀÌÅÍÀÇ ¼Û¼ö½ÅÀ» ½ÃÅ°´Â Ŭ¶óÀ̾ðÆ®ÃøÀÇ À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ »ùÇÃÀÔ´Ï´Ù.

#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCvcsocket.h>
extern WSCvcsocket* newvcso_000;

void btnop(WSCbase* object){
  //Á¢¼Ó ½ÃÀÛ, Á¼¼ÓÈÄ µ¥ÀÌÅÍ ¼Û¼ö½ÅÀ» ½ÇÇàÇÕ´Ï´Ù.
  long ret = newvcso_000->exec();
  if (ret != WS_NO_ERR){ //Á¢¼Ó½ÇÆÐ
    return;
  }
}
static WSCfunctionRegister  op("btnop",(void*)btnop);



UDP¼ÒÄϸ¦ »ç¿ëÇÑ µ¿Æ÷ ³×Æ®¿öÅ© Åë½ÅÀ» Çϱ⿡´Â

UDP ÀÇ °æ¿ì, ƯÁ¤ÀÇ »ó´ë¿Í Á¢¼ÓÇÒ°Í ¾øÀÌ ºÒƯÁ¤´ë¼ö(ºÒÀûÀç Çüº¯È¯ ÁÖ¼Ò:º¸ÅëÀº xxx.xxx.xxx.255)¿¡ ´ëÇؼ­ µ¥ÀÌÅͼ۽ŠÇÒ¼ö ÀÖ½À´Ï´Ù. ¼Û½Å½Ã¿¡ ÁöÁ¤µÈ Á¢¼Ó±¸·Î µ¥ÀÌÅ͸¦ ±â´Ù¿©Àִ°ÍÀÌ µ¥ÀÌÅ͸¦ ¹Þ¾Æµå¸¨´Ï´Ù.

¼Û½ÅÃø¿¡¼­ÀÇ ¼Ó¼ºÀÇ ¼³Á¤Àº WSNport ¿¡ »ó´ëÀÇ ¼ÒÄÏÀÇ Á¢¼Ó±¸¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¶Ç WSNip ¿¡ µ¿º¸ Åë½Å ÁÖ¼Ò(º¸ÅëÀº 255.255.255.255)À» ÁöÁ¤ÇÏÁö¸¸ 255.255.255.255 ·Î´Â ¼Û½Å¸øÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â ¼ö½Å»çÀÇ ³×Æ®¿öÅ© ÁÖ¼ÒÀÇ ¸¶°¨À» 255 ·Î ÇÑ°ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é 10.20.30.XX ¿¡ Á¸ÀçÇÏ´Â ºÒƯÁ¤ÀÇ ¸Ó½Å¿¡ ¼Û½ÅÇÒ °æ¿ì, 10.20.30.255 ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

¼ö½ÅÃø¿¡¼­ÀÇ ¼Ó¼ºÀÇ ¼³Á¤Àº WSNport ¿¡ ¼ö¼Ó¿ëÀÇ ¼ÒÄÏÀÇ Á¢¼Ó±¸¸¦ ÁöÁ¤Çؼ­ WSNrunning À» ON¿¡ ¼³Á¤ÇÕ´Ï´Ù. WSNip ¿¡´Â º¸Åë Ưº°ÇÑ ¼³Á¤À» ¾ÈÇÏÁö¸¸ Ȥ½Ã °°Àº ¸Ó½Å¿¡ º¹¼öÀÇ ÁÖ¼Ò°¡ Á¸ÀçÇؼ­ ±× ÁÖ¼ÒÁßÀÇ ¹Þ¾ÆµéÀÏ ÁÖ¼Ò¸¦ ƯÁ¤ÇÒ °æ¿ì¸¸ WSNip ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¼Û½ÅÃøÀº Á¢¼ÓÀ» ¾ÈÇÒ¸¸Å­ TCP ÀÇ °æ¿ì¿¡ ºñÇÏ¿© ´Ü¼øÇÕ´Ï´Ù. ´Ü WSCvudpsocket::write À» ºÒ·¯³õ°í µ¥ÀÌÅ͸¦ ¼Û½ÅÇÕ´Ï´Ù.

#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCvudpsocket.h>
extern WSCvudpsocket* newvudp_000;

void btnop(WSCbase* object){
  static long cnt = 0;
  WSCuchar buffer[64];
  //buffer ¿¡ µ¥ÀÌÅ͸¦ °Ý³³ÇÏ¿© ¼Û½Å
  strcpy(buffer,"send data..");
  long ret = newvudp_000->write(buffer,64);
  if (ret < 64){
    //¼Û½Å½ÇÆÐ
  }else{
    //¼Û½Å¼º°ø
  }
}
static WSCfunctionRegister  op("btnop",(void*)btnop);

¼ö½ÅÃøÀº TCP ÀÇ ¼­¹öÃø°ú °°ÀÌ ACTIVATE À̺¥Æ®·Î ±âµ¿µÉ À̺¥Æ® ÇÁ·Î½ÃÀú¿¡ ´ëÇÏ¿© ¼ö½ÅÇÕ´Ï´Ù.

#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCvudpsocket.h>
extern WSCvudpsocket* newvudp_000;

void recvop(WSCbase* object){
  WSCuchar buffer[64];
  // µ¥ÀÌÅÍÀÇ ¼ö½Å
  newvudp_000->read(buffer,64);
}
static WSCfunctionRegister  op("recvop",(void*)recvop);


Document Release 3.90 for WideStudio/MWT ver 3.90, Jul 2005


WideStudio/MWT documents index | Table of contents

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005