¹êÅç¤T¡B¼v­µ²á¤Ñ«Ç¡]PART II¡^

 

ÂI¹ïÂIºô»Úºô¸ôÀ³¥Îµ{¦¡¤¶²Ð¡G

 

Ø         ¥D±q¦¡(Client-Server)¬[ºc¡G

 

 

 


¥Ñ¦øªA¾¹±Ä³Q°Ê¼Ò¦¡¡Aµ¥«Ý¥Î¤áºÝ³s½u¡C¥Ñ¥Î¤áºÝ³s¦Ü¦øªA¾¹¡CÀ³¥Î¡Gºô¯¸¡BFTPµ¥¡C¥Ñ¦øªA¾¹´£¨Ñ«È¤áºÝªA°È¡C¦b¦øªA¾¹¤¤§t¦³Listen socket¡C

Ø         ÂI¹ïÂI(Peer-to-Peer)¬[ºc¡G

 

 

 


¥i¥Ñ¥ô¦ó¤@ºÝ³s½u¦Ü¥t¤@ºÝ¡C¨âºÝ¬O¦P¤@­Óµ{¦¡¡CÀ³¥Î¡GÀɮפÀ¨É(ezPeer¡BKuro)¡BICQ¡BNetMeeting¡C¨C­Ó¤@­ÓPeer³£¦³Listen socket¡C

 

§Ú­Ì¥i¥H±N¨C­ÓPeer·Q¹³¦¨§â¦øªA¾¹©M¥Î¤áºÝ¥]¦b¤@°_¡C

 

 

 

 

 

 

 


¤@¯ë¨Ó»¡¡AÂI¹ïÂI³s½u¥²¶·ª¾¹D¥t¤@ºÝªºIP¦ì¸m¡C³Ì²³æªº¤èªk¬O§Q¥Î¤@­Ó¦øªA¾¹¡A¦s©ñ¨C­ÓPeerªºIP¦ì¸m¡C»Ý­n®É¥t¤@ºÝIP¦ì¸m®É¡A¦V¦øªA¾¹¬d¸ß§Y¥i¡C

 

 

 

 

 

 

 


³o¼Ë«K¥i¥H±o¨ì»Ý­nªºIP¦ì¸m¡A¶i¦æ³s½u¡C

 

µ{¦¡¶}µo¬yµ{¡G

 

Step 1:    ªì©l¤ÆÂ^¨ú¼v¹³©MÁn­µ©Ò»Ýªº¸ê·½.

 

Step 2:    ·Ç³ÆÂ^¨ú¼v¹³»PÁn­µ.

 

 Step2.1:  ¨ú±ohandle.

 Step2.2:  ³sµ²µwÅé.

 Step2.3:  ¨ú±o¨Ã³]©w¸ê®Æµ²ºc.

 

Step 3:    ªì©l¤Æ¤Î³]©wÀ£ÁYµ{¦¡.

 

Step 4:    Â^¨ú¼v¹³»PÁn­µ.

 

Step 5:    ±N¸ê®Æ§Y®É¥HÀ£ÁYµ{¦¡À£ÁY.

 

Step 6:    ¶Ç°e»P±µ¦¬¸ê®Æ

 Step6.1:  «Ø¥ß³s½u.

 Step6.2:  serverºÝ°e¥X¸ê®Æ, client§Y®É±µ¦¬¸ê®Æ.

 

Step 7:    ±N±µ¦¬¨ìªº¸ê®Æ¸ÑÀ£ÁY¨Ã§Y®É¼½©ñ.

 

¨C¤@¨BÆJ¦CÁ|¨ä¤¤¤@­Ó±N»Ý­n¥Î¨ìªºfunction¬°½d¨Ò¡AÅܼƦWºÙ¶È¨Ñ°Ñ¦Ò¡A¨ä¾l©Ò»Ý­nªºfunction¡A¤j¦h¥i©óvfw.h¤¤§ä¨ì¡C


< Step 1 >

    if(!(hdd = DrawDibOpen()))

    {

        Application->MessageBox("initDisplay DrawDipOpen Error!","Error",MB_OK);

    }

 

    if(!(hdc = GetDC(hParent)))

    {

        Application->MessageBox("initDisplay GetDC Error!","Error",MB_OK);

    }

 

< Step 2.1 >

        if(!(hWndCap = capCreateCaptureWindow ( "Capture Window", WS_CHILD,

               0, 0,CAPWIDTH,CAPHEIGHT, hParent, 7)))

 

{

           Application->MessageBox("capCreateCaptureWindow ERROR", "Error",MB_OK);

    }

 

< Step 3 >

        compressor.Init(Form1->Handle);

 

< Step 4 >

           if(!capCaptureSequenceNoFile(hWndCap))

    {

                Application->MessageBox("capCaptureSequenceNoFile ERROR","Error",MB_OK);

    }

 

< Step 5 >

    lpcompresseddata = compressor.compress(lpVHdr->lpData);

 

< Step 6.1 >

void __fastcall TForm1::Button5Click(TObject *Sender)

{

   ClientSocket->Port=RemotePortEdit->Text.ToInt();

   ClientSocket->Address=RemoteIPEdit->Text;

   ClientSocket->Open();

}

 

< Step 7 >

    lpdecompresseddata = compressor.decompress(lpcompresseddata);

    if(!DrawDibBegin(video.hdd,video.hdc,-1,-1,&video.bmpinfo.bmiHeader,CAPWIDTH,CAPHEIGHT,NULL))

    {

        Application->MessageBox("initDisplay DrawDibBegin Error!","Error",MB_OK);

    }

 

     if(!DrawDibDraw(video.hdd,video.hdc,0,0,320,200,&video.bmpinfo.bmiHeader,lpdecompresseddata

         ,0,0,CAPWIDTH,CAPHEIGHT,DDF_SAME_DRAW | DDF_SAME_HDC))

    {

        Application->MessageBox("DrawDibDraw ERROR","Error",MB_OK);

    }