¹êÅç¤@¡B¤å¦r²á¤Ñ«Ç

¹êÅç­n¨D¡G

 

¥»¹êÅç¥D­n¬O§Q¥Î¥D±q¦¡¬[ºc¡Aconnection-oriented³sµ²¤è¦¡¡A¼¶¼g¤@­Ó¦h¸s²Õ²á¤Ñ«Ç¡C

½Ð¤Å¨Ï¥Î¦p BCB6, VC++¤¤²{¦¨ªººô¸ô¤¸¥ó¡A¥Î¤áºÝ©M¦øªA¾¹ºÝ¶¡¤§³q°T­n¦Û¤v¼g¡C

µ{¦¡¤¤­n¦³ÁקKblockingªº¯à¤O¡A¥t¥~¡A

¥Î¤áºÝ¥²»Ý¨ã³Æ¤U¦C¥\¯à¡G

  1. ¥i¥H©M²á¤Ñ«Ç¦øªA¾¹«Ø¥ß³s½u¤Î¤ÁÂ_³s½u¡C

  2. ¨Ï¥ÎªÌ¥i¥H¶}±Ò¤@­Ó¥H¤Wªº²á¤Ñ«Ç¡C

  3. ¨Ï¥ÎªÌ¥i¥H°ÊºA°Ñ¥[©ÎÂ÷¶}¤@­Ó©Î¦h­Ó¸s²Õ¡C

  4. ¨Ï¥ÎªÌ¥i¥H±oª¾¨C¤@­Ó¸s²Õ¤¤¨ä¥L¤Hªº¨­¥÷¡A¨Ã¬Ý¨ì¦P¸s²Õ¤¤¨ä¥L¤H°e¥Xªº°T®§(¨S¦³°Ñ¥[¸s²Õªº°T®§·íµM¬O¬Ý¤£¨ìªº)¡A¥ç¥i°e°T®§¦Ü¦³°Ñ¥[ªº¥ô¤@¸s²Õ¡C

¦øªA¾¹ºÝ¡G

  1. ¥i¥H±µ¨ü¥Î¤áºÝªº«Ø¥ß³s½u½Ð¨D¡A¤]¥i¥HÀH®É¤ÁÂ_³s½u¡C

  2. ¥i¥H±µ¨ü¥Î¤áºÝ°ÊºA¥[¤J¡BÂ÷¶}¡B©Î¶}±Ò¬Y­Ó¸s²Õ¡C

  3. ¦¬¨ì¬Y­Ó¥Î¤áºÝ°e¨ì¬Y¸s²Õªº°T®§®É¡A­t³d±N¨ä¶Çµ¹¦P¤@¸s²Õªº¨ä¥L¥Î¤áºÝ¡A¨Ï±o°Ñ¥[¦P¤@¸s²Õªº¤H¥i¥H¬Ý¨ì¨ä¥L¤H°e¥Xªº°T®§¡C

¹w³ø¡]¤£»Ý¼¶¼g¡^»Ý§¹¦¨¡G

  1. ¹ê»Ú¤U¸ü¨Ã¨Ï¥ÎMSN Messenger Live³nÅé¡A¨Ã±N§U±Ð(¦¬´Moops@cobra.ee.ntu.edu.tw)»P²Õ­û³]¦¨¦n¤Í¡C

  2. ¨Ï¥ÎMSN Messenger¡A¸ò§U±Ð²á¤@¤U¡A¤¶²Ð¤@¤U¦Û¤v¡C

 

¹êÅç¥Øªº¡G

 

1.   »{ÃѨüô±x Windows Sockets API¡C

2.   §Q¥Î Windows Sockets API ¥H¤Î²©ö Windows programming§Þ¥©¼¶¼g¤@­Ó¥D±q¦¡¬[ºcªº¦h¸s²Õ²á¤Ñ«Ç¡C

 

¹êÅç³]³Æ¡G

 

  µwÅé¡G³£¦³ºô¸ô¥d¬Û³sªº¨â¥x¹q¸£¡C

  ³nÅé¡G¥ô¦óµøµ¡µ{¦¡¶}µo³nÅé¡A¦pdotNET¡BVisual C++¡BBorland C++ Builder¡BVisual Basic¡B¡Èµ¥¡C

¹êÅç«Ç¥t¦³´£¨ÑMicrosoft Developer Network (MSDN) LibraryÅý¦P¾Ç¨Ï¥Î¡C

 

¹êÅç­ì²z¡G

 

1.  ¦ó¿×socket

 

±qºô¸ôªº¨¤«×¨Ó¬Ý¡Asocket´N¬O³q°T³sµ²ªººÝÂI¡F±qµ{¦¡³]­pªÌªº¨¤«×¨Ó¬Ý¡Asocket´£¨Ñ¤F¤@­Ó¨}¦nªº¤¶­±¨Ïµ{¦¡³]­pªÌ¤£»Ýª¾¹D¤U¼hºô¸ô¨ó©w¹B§@ªº²Ó¸`«K¥i¥H¼¶¼gºô¸ô³q°Tµ{¦¡¡C

 

Windows Socket¬O¥H¹ê§@©óBerkeley Software Distribution (BSD, release 4.3)¤¤ªºUNIX sockets¬°°ò¦©Òµo®i¥X¨Óªº¤@®MAPI¡A¨ä¤£¶È¤ä´© TCP/IP¡A¹ï©óXeroxR Network System (XNS), Digital Equipment Corporation¡¦s DECNet protocol, NovellR Corporation¡¦s Internet Packet Exchange/Sequenced Packed Exchange(IPX/SPX)¥ç¥i¥H¤ä´©¡C¦¹¥~¤]´£¨Ñ¾÷¾¹½Xªº¬Û®e©Ê¡A¦]¦¹¦b¤£¦Pªº§@·~¨t²Î¤W²¾´Ó®É¨Ã¤£»Ý­n°µ¥ô¦ó­×§ï¡C

 

Windows Socket API¬O¤@®M°ÊºA³sµ²¨ç¦¡®w(DLL)¡A§Yµ{¦¡¦b½sĶ®É´Á¨Ã¤£·|©M³o¨Ç¨ç¦¡®w³sµ²¡A¦Ó¬Oµ¥¨ì°õ¦æ´Á¶¡¤~·|©I¥s³o¨ç¦¡¡C

 

2.  Socketsªº¤ÀÃþ

 

¦bTCP/IP¬[ºc¤U¡Asockets¥i¤À¬°¤U­±¨âÃþ¡G

 

(1) Datagram sockets (connectionless)

¸ê®Æ¦bdatagram sockets¶¡¬O§Q¥ÎUDP«Ê¥]¶Ç°e¡A¦]¦¹±µ¦¬ºÝsocket¥i¯à·|¦¬¨ì¦¸§Ç¿ù»~ªº¸ê®Æ¡A¥B¨ä¤¤³¡¤À¸ê®Æ¥ç¥i¯à·|¿ò¥¢¡C

 

(2) Stream sockets (connection-oriented)

¸ê®Æ¦bstream sockets¶¡¬O§Q¥ÎTCP«Ê¥]¨Ó¶Ç°e¡A¦]¦¹±µ¦¬ºÝ socket ¥i¥H¦¬¨ì¶¶§ÇµL»~¡BµL­«ÂСB¥¿½Tªº¸ê®Æ¡C¦¹¥~TCP¶Ç°e®É¬O±Ä¸ê®Æ¬yªº¤è¦¡¡A¦]¦b¶Ç°e®É·|©Ò¦³¸ê®Æ·|µø±¡ªp³Q¤À³Î¦b¼Æ­Ó TCP«Ê¥]¤¤¡C

 

Sockets¦b²£¥Í®É«K»Ý«ü©w¨äºØÃþ¡A¥B°ß¦³¦PÃþ¤§sockets¤~¯à©¼¦¹·¾³q¡C

 

3.  ¥D±q¦¡¬[ºc¼Ò«¬(Client/Server model)

 

¨C­Óºô¸ôÀ³¥Îµ{¦¡³£¦³¤@­Ó³q°TºÝÂI¡A¤@ºØºÝÂI¬O¥Î¤áºÝ¡A¥t¤@ºØ¬O¦øªA¾¹¡C®Ú¾Ú©w¸q¡A¥Î¤áºÝ·|¥ý°e¥X²Ä¤@­Ó«Ê¥]¡A¥Ñ¤@­Ó¦øªA¾¹±µ¦¬¡C¦bªì¨B±µÄ²«á¡A¥Î¤áºÝ©M¦øªA¾¹§¡¯à¶}©l¦¬°e¸ê®Æ¡C

 

¨Ì¾Úsocket©Ò´£¨ÑªºªA°È¨Ó±N¥¦¤ÀÃþ¡AµM¦Ó¦b¥Î¤áºÝ©M¦øªA¾¹¤Wªº³o¨â­Ósockets¥²¶·¬O¦P¤@Ãþ¤~¯à¤¬¬Û³q°T¡A¤]´N¬O»¡¡A¥L­Ì¥²¶·³£¬Ostream (TCP)©Î³£¬Odatagram (UDP)¡C¥Î¤áºÝªºÀ³¥Îµ{¦¡¥²¶·­n¯à§ä¨ì¨ÃÃѧO¦øªA¾¹ªºsocket¡A¦Ó¦øªA¾¹·|±N¥¦ªºsocket©R¦W¥HÅý¥Î¤áºÝÃѧO¡A´NTCP/IP¦Ó¨¥¡A¤@­Ósocket name¥]¬A¤FIP¦ì§}¡B³sµ²°ð½s¸¹¡B¥H¤Î¨ó©w¥»¨­¡C¥Î¤áºÝ¥i¥ÎWindows Socketsªº¦WºÙ¦øªA¨ç¦¡¨Ó¬d¨ì¼Ð·Ç¦øªA¾¹ªº³sµ²°ð½s¸¹¡A¦Ó¦pªGª¾¹D¦øªA¾¹ªº¥D¾÷¦W¡A«h¥i¥HWindows Socketsªº¥D¾÷¦WºÙ¤ÀªR¨ç¦¡¡A¨Ó¬d±o¦øªA¾¹ªºIP¡C·í¥Î¤áºÝsocket¦¨¥\¦aÁpô¤W¦øªA¾¹ºÝ¤§socket«á¡A³o¨âªÌ«K§Î¦¨¤@­Ó¡§µ²¦X¡¨ (association)¡C¦b¦¹®É¡A¨C­Ósocket³£¥i¥H¥Ñ¥¦ªº¦W¦r¤Î¹ï¤èªº¦W¦r©Ò§Î¦¨ªº²Õ¦X¥[¥HÃѧO¡C³o­Óµ²¦X¥]¬A¤­­Ó­n¯À¡G©Ò¥Îªº¨ó©w¡B¥Î¤áºÝIP¦ì§}¡B¥Î¤áºÝ³sµ²°ð¸¹½X¡B¦øªA¾¹ºÝIP¦ì§}¡B¦øªA¾¹ºÝ³sµ²°ð¸¹½X¡C³o­Ó¡§µ²¦X¡¨ªºÆ[©À¨Ã¤£¥u¬OWindows Socketsµ{¦¡³]­pªº°ò¦¡A¥¦¤]¬O¤@¯ëºô¸ô³q°Tªº­«­nÆ[©À¡C¦bµ²¦X¤¤ªº¸ê°T¥iÃѧO¤Î¤Þ¾É«Ê¥]³q¹Lºô¸ô¡A±q³o¤@ºÝªºµ{¦¡¶Ç¦Ü¥t¤@ºÝ¡C

 

©Ò¦³ªººô¸ôÀ³¥Îµ{¦¡¬Ò¥i¤À¬°¤­­Ó¨BÆJ¡G

 

TCP                                     UDP

¹Ï¤@    socket µ{¦¡Â²¹Ï

 

u        ¶}±Ò¤@­ÓSocket

Socket¬O³q°TªººÝÂI¡A¦n¤ñ¬O¹q¸£ªººô¸ô¤¶­±¥d¡A¨Ï±oºô¸ôÀ³¥Îµ{¦¡¥i¥H¹³¤¶­±¥d´¡¦b¥D¾÷ªO¤W¤@¼Ë¡A´¡¤Jºô¸ô¤¤¡C¤@¯ë»¡¨Ó§A¥u·|¦³¤@¤ùºô¸ô¥d¦b¹q¸£¤¤¡A¦ý¬O§A¥i¥H¦³³\¦hsockets¡A¦Ó¥B¥¦­Ì¤]¥i¥H¦P®É¨Ï¥Î¤@¤ùºô¸ô¥d¡C¥Î¤áºÝ»P¦øªA¾¹ºÝ³£»Ý­n¤@­Ósocket¥H¦s¨úºô¸ô¸ê®Æ¡A¨Ï¥Îsocket() ¨ç¦¡©I¥s´N¥i¶}±Ò¤@­Ósocket¡C(¦p¹Ï¤@©Ò¥Ü)

u        ¬°Socket©R¦W

¦øªA¾¹ºÝªºµ{¦¡¥²¶·¬°¥¦ªºsocket©R¦W¡A³o¼Ë¥Î¤áºÝ¤~¯à§ä¨ì¨Ã¥¿½T¦a¿ëÃÑ¥X¥¦ªºsocket¡A¦pªG¦øªA¾¹¨S¦³´À¥¦ªºsocket©R¦W¡A«h¨ó©w°ïÅ|·|©Úµ´¥Î¤áºÝ­n³q°Tªº½Ð¨D¡C­nÀ°socket¨ú¦W¥²¶·³]©w¤T­Ó°Ñ¼Æ¡G¨ó©w¡B³sµ²°ð¸¹½X¡B¤Î¦ì§}¡A¦Ó¥Î¤áºÝ´N­n¥Î³o¨Ç­È¨Ó©M¦øªA¾¹«Ø¥ß³sµ²¡C­n¬°socket©R¦W¡A¦øªA¾¹¥²¶·¬°socket¦ì§}µ²ºc³]ªì©l­È¨Ã©I¥sbind()¨ç¦¡¡A¥H«ü©w¥»¨­³sµ²°ð¸¹½X©MIP¦ì§}¡A§¹¦¨©R¦Wªº¤u§@¡C

u        »P¥t¤@­ÓSocketµ²¦X

°²³]§Ú­Ì¦b¥Î¤áºÝ»P¦øªA¾¹ºÝ§¡¶}±Ò¤@­Ósocket¡A¨Ã¦Ü¤Ö¬°¦øªA¾¹ºÝªºsocket©R¦W¡C±µ¤U¨Ó¦øªA¾¹­n·Ç³Æ±µ¦¬«Ê¥]¡A¦Ó¥Î¤áºÝ­n·Ç³Æµo°e«Ê¥]¡A·í¦¹·Ç³Æ¤u§@§¹¦¨«á¡A¦¹¨âºÝªºsockets´N¥s«Ø¥ß¤@­Ó¡¨µ²¦X¡¨(association)¡C¦p¦ó¬°µ²¦X¦¹¨âºÝªºsocket°µ·Ç³Æ©O? ¦bWinSock API¤¤´£¨Ñ¤F´X­Ó¨ç¦¡¨Ó§¹¦¨¦¹°Ê§@¡C¦b¦øªA¾¹ºÝ«h¥H©I¥s listen()¨Ó·Ç³Æ±µ¨ü¥Î¤áºÝ°e¨Óªº³sµ²­n¨D¡A¦pªG¦¬¨ì³s½u­n¨D¡A«h¶}±Ò¥t¤@­Ó·sªº socket ¨Ó©M¥Î¤áºÝ¶i¦æ³s½u(¨Ï¥Îaccept()¨ç¦¡)¡F¦Ó¦b¥Î¤áºÝ«h¬O©I¥sconnect()¨ç¦¡»P¦øªA¾¹ºÝªºsocket§¹¦¨µ²¦X¡C

u        ¦bSockets¶¡¦¬°e¸ê®Æ

¦¹®É§Ú­Ì¤w¸g¦b¥Î¤áºÝ©M¦øªA¾¹ªºsockets¶¡«Ø¥ß¤Fµ²¦X¡A¤]´N¬O»¡¡A§Ú­Ì¤w¸g¥i¥H¶}©l¦¬°e¸ê®Æ¤F¡C¦p¦ó¦¬°e¸ê®Æ©O? ¦b¤@­Ó¤w³sµ²ªºsocket¤W¦¬°e¸ê®Æ¥i©I¥srecv()»Psend()¨Ó§¹¦¨¡F¦Ó¦b¤@­ÓµL³sµ²ªºsocket¤W¦¬°e¸ê®Æ¥i©I¥srecvfrom()»Psendto()¨Ó§¹¦¨¡C

u        Ãö³¬Socket

·í¥Î¤áºÝ§¹¦¨¦¬°e¸ê®Æ¥B©¹«á¨Ã¤£·|¦b¨Ï¥Î®É¡A¥²¶·Ãö³¬socket¡A¹ïTCP socket¦Ó¨¥¡AÃö³¬socket°£¤F±Nsocketªº¸ê·½ÁÙµ¹¨ó©w°ïÅ|¡A¦¹¥~¨Ã¹Á¸Õ±N¥H«Ø¥ßªº³sµ²Ãö³¬¡C¦ý¹ïUDP socket¦Ó¨¥¡A«h¬O³æ¯Â¦a±N¸ê·½ÁÙµ¹¨ó©w°ïÅ|¡CÃö³¬socket¥i©I¥sclosesocket()¨Ó§¹¦¨¡C

 

µ²³ø°ÝÃD¡G

 

1.   ½Ð¤À§O±Ô­z§A³]­p¤§²á¤Ñ«Ç¦øªA¾¹ºÝ»P¥Î¤áºÝ¡]1¡^³W¹º³]­p¡]2¡^¹B§@¤è¦¡¡]3¡^¥\¯à¯S¦â¡C

2.   ¥»¹êÅ窺²á¤Ñ«Çµ{¦¡¬O¨Ï¥Î¥D±q¦¡¬[ºc¡C§Aı±o¬O§_¦³¨ä¥L¥i¦æªº¤è¦¡¡H­Y¦³¡A½Ð¥Î¥\¯à¤è¶ô¹Ï»¡©ú±N¦p¦ó¹B§@¡C

3.   ½Ð²³æ±Ô­zconnection-oriented (TCP)©Mconnectionless (UDP)¤è¦¡¤§¬yµ{¡C

4.   WinSock API¤¤¦³³¡¤À¨ã¦³blockingªº¯S©Ê¡A½Ð±Ô­z¦¹¤@¯S©Ê¨Ã»¡©ú§A¦p¦ó¸Ñ¨M³o­Ó°ÝÃD¡A¬O§_¦³¨ä¥Lªº¸Ñ¨M¤èªk¡H

 

°Ñ¦Ò¤åÄm¡G

1.   INTERNETWORKING WITH TCP/IP VOL.3 CLIENT-SERVER PROGRAMMING AND APPLICATIONS Windows Sockets Version,¡¨ Douglas E. Comer and David L. Stevens, Prentice-Hall International, Inc.

2.   ¡§Windows Sockets ºô¸ôµ{¦¡³]­p¸g¨å¡¨¡A§õ©s®Ñ¡B¶ÀÅb¶WĶ¡A¬ü°Ó·R­}¥Í½Ã´µ²z¡BùÖ®p¸ê°TªÑ¥÷¦³­­¤½¥q¦X§@¥Xª©¡C

3.   ¡§WinSockºô¸ôµ{¦¡³]­p¤§Æ_¡¨¡A¶À«T³ó¡B¶ÀÄ£¤å¡B³\´ºµØ¡B³¯§µ©¾µÛ¡A¸ê°T¤H¤å¤Æ¨Æ·~