![]() | 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);
Copyright(C) WideStudio/MWT Development Team, 1999-2005 | Last modified: Jul 31, 2005 |