Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
c#socket±à³Ì»ù´¡
 
×÷Õߣºjsot À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2016-8-11
  2914  次浏览      30
 

Microsoft.Net FrameworkΪӦÓóÌÐò·ÃÎÊInternetÌṩÁË·Ö²ãµÄ¡¢¿ÉÀ©Õ¹µÄÒÔ¼°ÊܹÜϽµÄÍøÂç·þÎñ£¬ÆäÃû×Ö¿Õ¼äSystem.NetºÍSystem.Net.Sockets°üº¬·á¸»µÄÀà¿ÉÒÔ¿ª·¢¶àÖÖÍøÂçÓ¦ÓóÌÐò¡£.NetÀà²ÉÓõķֲã½á¹¹ÔÊÐíÓ¦ÓóÌÐòÔÚ²»Í¬µÄ¿ØÖƼ¶±ðÉÏ·ÃÎÊÍøÂ磬¿ª·¢ÈËÔ±¿ÉÒÔ¸ù¾ÝÐèҪѡÔñÕë¶Ô²»Í¬µÄ¼¶±ð±àÖÆ³ÌÐò£¬ÕâЩ¼¶±ð¼¸ºõÄÒÀ¨ÁËInternetµÄËùÓÐÐèÒª--´ÓsocketÌ×½Ó×Öµ½ÆÕͨµÄÇëÇó/ÏìÓ¦£¬¸üÖØÒªµÄÊÇ£¬ÕâÖÖ·Ö²ãÊÇ¿ÉÒÔÀ©Õ¹µÄ£¬Äܹ»ÊÊÓ¦Internet²»¶ÏÀ©Õ¹µÄÐèÒª¡£

Å׿ªISO/OSIÄ£Ð͵Ä7²ã¹¹¼Ü£¬µ¥´ÓTCP/IPÄ£ÐÍÉϵÄÂß¼­²ãÃæÉÏ¿´£¬.NetÀà¿ÉÒÔÊÓΪ°üº¬3¸ö²ã´Î£ºÇëÇó/ÏìÓ¦²ã¡¢Ó¦ÓÃЭÒé²ã¡¢´«Êä²ã¡£WebReqeustºÍWebResponse ´ú±íÁËÇëÇó/ÏìÓ¦²ã£¬Ö§³ÖHttp¡¢TcpºÍUdpµÄÀà×é³ÉÁËÓ¦ÓÃЭÒé²ã£¬¶øSocketÀà´¦ÓÚ´«Êä²ã¡£

´«Êä²ãλÓÚÕâ¸ö½á¹¹µÄ×îµ×²ã£¬µ±ÆäÉÏÃæµÄÓ¦ÓÃЭÒé²ãºÍÇëÇó/ÏìÓ¦²ã²»ÄÜÂú×ãÓ¦ÓóÌÐòµÄÌØÊâÐèҪʱ£¬¾ÍÐèҪʹÓÃÕâÒ»²ã½øÐÐSocketÌ×½Ó×Ö±à³Ì¡£

¶øÔÚ.NetÖУ¬System.Net.Sockets ÃüÃû¿Õ¼äΪÐèÒªÑÏÃÜ¿ØÖÆÍøÂç·ÃÎʵĿª·¢ÈËÔ±ÌṩÁË Windows Sockets (Winsock) ½Ó¿ÚµÄÍйÜʵÏÖ¡£System.Net ÃüÃû¿Õ¼äÖеÄËùÓÐÆäËûÍøÂç·ÃÎÊÀà¶¼½¨Á¢ÔÚ¸ÃÌ×½Ó×ÖSocketʵÏÖÖ®ÉÏ£¬ÈçTCPClient¡¢TCPListener ºÍ UDPClient Àà·â×°Óйش´½¨µ½ Internet µÄ TCP ºÍ UDP Á¬½ÓµÄÏêϸÐÅÏ¢£»NetworkStreamÀàÔòÌṩÓÃÓÚÍøÂç·ÃÎʵĻù´¡Êý¾ÝÁ÷µÈ£¬³£¼ûµÄÐí¶àInternet·þÎñ¶¼¿ÉÒÔ¼ûµ½SocketµÄ×ÙÓ°£¬ÈçTelnet¡¢Http¡¢Email¡¢EchoµÈ£¬ÕâЩ·þÎñ¾¡¹ÜͨѶЭÒéProtocolµÄ¶¨Ò岻ͬ£¬µ«ÊÇÆä»ù´¡µÄ´«Êä¶¼ÊDzÉÓõÄSocket¡£

Æäʵ£¬Socket¿ÉÒÔÏóÁ÷StreamÒ»Ñù±»ÊÓΪһ¸öÊý¾ÝͨµÀ£¬Õâ¸öͨµÀ¼ÜÉèÔÚÓ¦ÓóÌÐò¶Ë£¨¿Í»§¶Ë£©ºÍÔ¶³Ì·þÎñÆ÷¶ËÖ®¼ä£¬¶øºó£¬Êý¾ÝµÄ¶ÁÈ¡£¨½ÓÊÕ£©ºÍдÈ루·¢ËÍ£©¾ùÕë¶ÔÕâ¸öͨµÀÀ´½øÐС£

¿É¼û£¬ÔÚÓ¦ÓóÌÐò¶Ë»òÕß·þÎñÆ÷¶Ë´´½¨ÁËSocket¶ÔÏóÖ®ºó£¬¾Í¿ÉÒÔʹÓÃSend/SentTo·½·¨½«Êý¾Ý·¢Ë͵½Á¬½ÓµÄSocket,»òÕßʹÓÃReceive/ReceiveFrom·½·¨½ÓÊÕÀ´×ÔÁ¬½ÓSocketµÄÊý¾Ý£»

Õë¶ÔSocket±à³Ì£¬.NET ¿ò¼ÜµÄ Socket ÀàÊÇ Winsock32 API ÌṩµÄÌ×½Ó×Ö·þÎñµÄÍйܴúÂë°æ±¾¡£ÆäÖÐΪʵÏÖÍøÂç±à³ÌÌṩÁË´óÁ¿µÄ·½·¨£¬´ó¶àÊýÇé¿öÏ£¬Socket Àà·½·¨Ö»Êǽ«Êý¾Ý·âË͵½ËüÃǵı¾»ú Win32 ¸±±¾Öв¢´¦ÀíÈκαØÒªµÄ°²È«¼ì²é¡£Èç¹ûÄãÊìϤWinsock APIº¯Êý£¬ÄÇôÓÃSocketÀà±àÐ´ÍøÂç³ÌÐò»á·Ç³£ÈÝÒ×£¬µ±È»£¬Èç¹ûÄã²»Ôø½Ó´¥¹ý£¬Ò²²»»áÌ«À§ÄÑ£¬¸úËæÏÂÃæµÄ½â˵£¬Äã»á·¢¾õʹÓÃSocketÀ࿪·¢windows ÍøÂçÓ¦ÓóÌÐòÔ­À´Óйæ¿ÉѰ£¬ËüÃÇÔÚ´ó¶àÊýÇé¿öÏÂ×ñÑ­´óÖÂÏàͬµÄ²½Öè¡£

ÔÚʹÓÃ֮ǰ£¬ÄãÐèÒªÊ×ÏÈ´´½¨Socket¶ÔÏóµÄʵÀý£¬Õâ¿ÉÒÔͨ¹ýSocketÀàµÄ¹¹Ôì·½·¨À´ÊµÏÖ£º

 public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType); 

ÆäÖУ¬addressFamily ²ÎÊýÖ¸¶¨ Socket ʹÓõÄѰַ·½°¸£¬socketType ²ÎÊýÖ¸¶¨ Socket µÄÀàÐÍ£¬protocolType ²ÎÊýÖ¸¶¨ Socket ʹÓõÄЭÒé¡£

ÏÂÃæµÄʾÀýÓï¾ä´´½¨Ò»¸ö Socket£¬Ëü¿ÉÓÃÓÚÔÚ»ùÓÚ TCP/IP µÄÍøÂ磨Èç Internet£©ÉÏͨѶ¡£

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

ÈôҪʹÓà UDP ¶ø²»ÊÇ TCP£¬ÐèÒª¸ü¸ÄЭÒéÀàÐÍ£¬ÈçÏÂÃæµÄʾÀýËùʾ£º

 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 

Ò»µ©´´½¨ Socket£¬ÔÚ¿Í»§¶Ë£¬Ä㽫¿ÉÒÔͨ¹ýConnect·½·¨Á¬½Óµ½Ö¸¶¨µÄ·þÎñÆ÷£¬²¢Í¨¹ýSend/SendTo·½·¨ÏòÔ¶³Ì·þÎñÆ÷·¢ËÍÊý¾Ý£¬¶øºó¿ÉÒÔͨ¹ýReceive/ReceiveFrom´Ó·þÎñ¶Ë½ÓÊÕÊý¾Ý£»¶øÔÚ·þÎñÆ÷¶Ë£¬ÄãÐèҪʹÓÃBind·½·¨°ó¶¨ËùÖ¸¶¨µÄ½Ó¿ÚʹSocketÓëÒ»¸ö±¾µØÖÕ½áµãÏàÁª£¬²¢Í¨¹ýListen·½·¨ÕìÌý¸Ã½Ó¿ÚÉϵÄÇëÇ󣬵±ÕìÌýµ½Óû§¶ËµÄÁ¬½Óʱ£¬µ÷ÓÃAcceptÍê³ÉÁ¬½ÓµÄ²Ù×÷£¬´´½¨ÐµÄSocketÒÔ´¦Àí´«ÈëµÄÁ¬½ÓÇëÇó¡£Ê¹ÓÃÍê Socket ºó£¬¼ÇסʹÓà Shutdown ·½·¨½ûÓà Socket£¬²¢Ê¹Óà Close ·½·¨¹Ø±Õ Socket¡£Æä¼äÓõ½µÄ·½·¨/º¯ÊýÓУº

  Socket.Connect·½·¨:½¨Á¢µ½Ô¶³ÌÉ豸µÄÁ¬½Ó 
public void Connect(EndPoint remoteEP)£¨ÓÐÖØÔØ·½·¨£©
Socket.Send ·½·¨:´ÓÊý¾ÝÖеÄָʾλÖÿªÊ¼½«Êý¾Ý·¢Ë͵½Á¬½ÓµÄ Socket¡£
public int Send(byte[], int, SocketFlags);(ÓÐÖØÔØ·½·¨)
Socket.SendTo ·½·¨ ½«Êý¾Ý·¢Ë͵½Ìض¨ÖÕ½áµã¡£
public int SendTo(byte[], EndPoint);£¨ÓÐÖØÔØ·½·¨£©
Socket.Receive·½·¨:½«Êý¾Ý´ÓÁ¬½ÓµÄ Socket ½ÓÊÕµ½½ÓÊÕ»º³åÇøµÄÌØ¶¨Î»Öá£
public int Receive(byte[],int,SocketFlags);
Socket.ReceiveFrom·½·¨£º½ÓÊÕÊý¾Ý»º³åÇøÖÐÌØ¶¨Î»ÖõÄÊý¾Ý²¢´æ´¢ÖÕ½áµã¡£
public int ReceiveFrom(byte[], int, SocketFlags, ref EndPoint);
Socket.Bind ·½·¨£ºÊ¹ Socket ÓëÒ»¸ö±¾µØÖÕ½áµãÏà¹ØÁª£º
public void Bind( EndPoint localEP );
Socket.Listen·½·¨£º½« Socket ÖÃÓÚÕìÌý״̬¡£
public void Listen( int backlog );
Socket.Accept·½·¨:´´½¨Ð嵀 Socket ÒÔ´¦Àí´«ÈëµÄÁ¬½ÓÇëÇó¡£
public Socket Accept();
Socket.Shutdown·½·¨:½ûÓÃij Socket Éϵķ¢ËͺͽÓÊÕ
public void Shutdown( SocketShutdown how );
Socket.Close·½·¨:Ç¿ÖÆ Socket Á¬½Ó¹Ø±Õ
public void Close();

¿ÉÒÔ¿´³ö£¬ÒÔÉÏÐí¶à·½·¨°üº¬EndPointÀàÐ͵IJÎÊý£¬ÔÚInternetÖУ¬TCP/IP ʹÓÃÒ»¸öÍøÂçµØÖ·ºÍÒ»¸ö·þÎñ¶Ë¿ÚºÅÀ´Î¨Ò»±êʶÉ豸¡£ÍøÂçµØÖ·±êÊ¶ÍøÂçÉϵÄÌØ¶¨É豸£»¶Ë¿ÚºÅ±êʶҪÁ¬½Óµ½µÄ¸ÃÉ豸ÉϵÄÌØ¶¨·þÎñ¡£ÍøÂçµØÖ·ºÍ·þÎñ¶Ë¿ÚµÄ×éºÏ³ÆÎªÖÕ½áµã£¬ÔÚ .NET ¿ò¼ÜÖÐÕýÊÇÓÉ EndPoint Àà±íʾÕâ¸öÖÕ½áµã£¬ËüÌṩ±íÊ¾ÍøÂç×ÊÔ´»ò·þÎñµÄ³éÏó£¬ÓÃÒÔ±êÖ¾ÍøÂçµØÖ·µÈÐÅÏ¢¡£.NetͬʱҲΪÿ¸öÊÜÖ§³ÖµÄµØÖ·×嶨ÒåÁË EndPoint µÄ×Ó´ú£»¶ÔÓÚ IP µØÖ·×壬¸ÃÀàΪ IPEndPoint¡£IPEndPoint Àà°üº¬Ó¦ÓóÌÐòÁ¬½Óµ½Ö÷»úÉϵķþÎñËùÐèµÄÖ÷»úºÍ¶Ë¿ÚÐÅÏ¢£¬Í¨¹ý×éºÏ·þÎñµÄÖ÷»úIPµØÖ·ºÍ¶Ë¿ÚºÅ£¬IPEndPoint ÀàÐγɵ½·þÎñµÄÁ¬½Óµã¡£

Óõ½IPEndPointÀàµÄʱºò¾Í²»¿É±ÜÃâµØÉæ¼°µ½¼ÆËã»úIPµØÖ·£¬.NetÖÐÓÐÁ½ÖÖÀà¿ÉÒԵõ½IPµØÖ·ÊµÀý£º

IPAddressÀࣺIPAddress Àà°üº¬¼ÆËã»úÔÚ IP ÍøÂçÉϵĵØÖ·¡£ÆäParse·½·¨¿É½« IP µØÖ·×Ö·û´®×ª»»Îª IPAddress ʵÀý¡£ÏÂÃæµÄÓï¾ä´´½¨Ò»¸ö IPAddress ʵÀý£º

  IPAddress myIP = IPAddress.Parse("192.168.1.2"); 

Dns ÀࣺÏòʹÓà TCP/IP Internet ·þÎñµÄÓ¦ÓóÌÐòÌṩÓòÃû·þÎñ¡£ÆäResolve ·½·¨²éѯ DNS ·þÎñÆ÷ÒÔ½«Óû§ÓѺõÄÓòÃû£¨Èç"host.contoso.com"£©Ó³Éäµ½Êý×ÖÐÎʽµÄ Internet µØÖ·£¨Èç 192.168.1.1£©¡£Resolve·½·¨ ·µ»ØÒ»¸ö IPHostEnty ʵÀý£¬¸ÃʵÀý°üº¬ËùÇëÇóÃû³ÆµÄµØÖ·ºÍ±ðÃûµÄÁÐ±í¡£´ó¶àÊýÇé¿öÏ£¬¿ÉÒÔʹÓà AddressList Êý×éÖзµ»ØµÄµÚÒ»¸öµØÖ·¡£ÏÂÃæµÄ´úÂë»ñȡһ¸ö IPAddress ʵÀý£¬¸ÃʵÀý°üº¬·þÎñÆ÷ host.contoso.com µÄ IP µØÖ·¡£

  IPHostEntry ipHostInfo = Dns.Resolve("host.contoso.com"); 
IPAddress ipAddress = ipHostInfo.AddressList[0];

ÄãÒ²¿ÉÒÔʹÓÃGetHostName·½·¨µÃµ½IPHostEntryʵÀý£º

  IPHosntEntry hostInfo=Dns.GetHostByName("host.contoso.com") 

ÔÚʹÓÃÒÔÉÏ·½·¨Ê±£¬Ä㽫¿ÉÄÜÐèÒª´¦ÀíÒÔϼ¸ÖÖÒì³££º

SocketExceptionÒì³££º·ÃÎÊSocketʱ²Ù×÷ϵͳ·¢Éú´íÎóÒý·¢

ArgumentNullExceptionÒì³££º²ÎÊýΪ¿ÕÒýÓÃÒý·¢

ObjectDisposedExceptionÒì³££ºSocketÒѾ­¹Ø±ÕÒý·¢

ÔÚÕÆÎÕÉÏÃæµÃ֪ʶºó£¬ÏÂÃæµÄ´úÂ뽫¸Ã·þÎñÆ÷Ö÷»ú£¨ host.contoso.comµÄ IP µØÖ·Óë¶Ë¿ÚºÅ×éºÏ£¬ÒÔ±ãΪÁ¬½Ó´´½¨Ô¶³ÌÖÕ½áµã£º

 IPEndPoint ipe = new IPEndPoint(ipAddress,11000); !

È·¶¨ÁËÔ¶³ÌÉ豸µÄµØÖ·²¢Ñ¡ÔñÁËÓÃÓÚÁ¬½ÓµÄ¶Ë¿Úºó£¬Ó¦ÓóÌÐò¿ÉÒÔ³¢ÊÔ½¨Á¢ÓëÔ¶³ÌÉ豸µÄÁ¬½Ó¡£ÏÂÃæµÄʾÀýʹÓÃÏÖÓÐµÄ IPEndPoint ʵÀýÓëÔ¶³ÌÉ豸Á¬½Ó£¬²¢²¶»ñ¿ÉÄÜÒý·¢µÄÒì³££º

try { 
s.Connect(ipe);//³¢ÊÔÁ¬½Ó
}
//´¦Àí²ÎÊýΪ¿ÕÒýÓÃÒì³£
catch(ArgumentNullException ae) {
Console.WriteLine("ArgumentNullException : {0}", ae.ToString());
}
//´¦Àí²Ù×÷ϵͳÒì³£
catch(SocketException se) {
Console.WriteLine("SocketException : {0}", se.ToString());
}
catch(Exception e) {
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}

ÐèÒªÖªµÀµÄÊÇ£ºSocket ÀàÖ§³ÖÁ½ÖÖ»ù±¾Ä£Ê½£ºÍ¬²½ºÍÒì²½¡£ÆäÇø±ðÔÚÓÚ£ºÔÚͬ²½Ä£Ê½ÖУ¬¶ÔÖ´ÐÐÍøÂç²Ù×÷µÄº¯Êý£¨Èç Send ºÍ Receive£©µÄµ÷ÓÃÒ»Ö±µÈµ½²Ù×÷Íê³Éºó²Å½«¿ØÖÆ·µ»Ø¸øµ÷ÓóÌÐò¡£ÔÚÒ첽ģʽÖУ¬ÕâЩµ÷ÓÃÁ¢¼´·µ»Ø¡£

ÁíÍ⣬ºÜ¶àʱºò£¬Socket±à³ÌÊÓÇé¿ö²»Í¬ÐèÒªÔÚ¿Í»§¶ËºÍ·þÎñÆ÷¶Ë·Ö±ðÓèÒÔʵÏÖ£¬ÔÚ¿Í»§¶Ë±àÖÆÓ¦ÓóÌÐòÏò·þÎñ¶ËÖ¸¶¨¶Ë¿Ú·¢ËÍÇëÇó£¬Í¬Ê±±àÖÆ·þÎñ¶ËÓ¦ÓóÌÐò´¦Àí¸ÃÇëÇó£¬Õâ¸ö¹ý³ÌÔÚÉÏÃæµÄ²ûÊöÖÐÒѾ­Ìá¼°£»µ±È»£¬²¢·ÇËùÓеÄSocket±à³Ì¶¼ÐèÒªÄãÑϸñ±àдÕâÁ½¶Ë³ÌÐò£»ÊÓÓ¦ÓÃÇé¿ö²»Í¬£¬Äã¿ÉÒÔÔÚ¿Í»§¶Ë¹¹Ôì³öÇëÇó×Ö·û´®£¬·þÎñÆ÷ÏàÓ¦¶Ë¿Ú²¶»ñÕâ¸öÇëÇ󣬽»Óɯ乫Ó÷þÎñ³ÌÐò½øÐд¦Àí¡£ÒÔÏÂÊÂÀýÓï¾äÖеÄ×Ö·û´®¾ÍÏòÔ¶³ÌÖ÷»úÌá³öÒ³ÃæÇëÇó£º

string Get = "GET / HTTP/1.1\r\nHost: " + server + "\r\nConnection: Close\r\n\r\n";

Ô¶³ÌÖ÷»úÖ¸¶¨¶Ë¿Ú½ÓÊܵ½ÕâÒ»ÇëÇóºó£¬¾Í¿ÉÀûÓÃÆä¹«Ó÷þÎñ³ÌÐò½øÐд¦Àí¶ø²»ÐèÒªÁíÐбàÖÆ·þÎñÆ÷¶ËÓ¦ÓóÌÐò¡£

×ÛºÏÔËÓÃÒÔÉϲûÊöµÄʹÓÃVisual C#½øÐÐSocketÍøÂç³ÌÐò¿ª·¢µÄ֪ʶ£¬ÏÂÃæµÄ³ÌÐò¶ÎÍêÕûµØÊµÏÖÁËWebÒ³ÃæÏÂÔØ¹¦ÄÜ¡£Óû§Ö»ÐèÔÚ´°ÌåÉÏÊäÈëÔ¶³ÌÖ÷»úÃû£¨Dns Ö÷»úÃû»òÒÔµã·Ö¸ôµÄËIJ¿·Ö±íʾ·¨¸ñʽµÄ IP µØÖ·£©ºÍÔ¤±£´æµÄ±¾µØÎļþÃû£¬²¢ÀûÓÃרÃÅÌṩHttp·þÎñµÄ80¶Ë¿Ú£¬¾Í¿ÉÒÔ»ñȡԶ³ÌÖ÷»úÒ³Ãæ²¢±£´æÔÚ±¾µØ»úÖ¸¶¨ÎļþÖС£Èç¹û±£´æ¸ñʽÊÇ.htm¸ñʽ£¬Äã¾Í¿ÉÒÔÔÚInternetä¯ÀÀÆ÷Öдò¿ª¸ÃÒ³Ãæ¡£Êʵ±Ìí¼Ó´úÂ룬ÄãÉõÖÁ¿ÉÒÔʵÏÖÒ»¸ö¼òµ¥µÄä¯ÀÀÆ÷³ÌÐò¡£

ʵÏִ˹¦ÄܵÄÖ÷ÒªÔ´´úÂëÈçÏ£º

 //"¿ªÊ¼"°´Å¥Ê¼þ 
private void button1_Click(object sender, System.EventArgs e) {
//È¡µÃÔ¤±£´æµÄÎļþÃû
string fileName=textBox3.Text.Trim();
//Ô¶³ÌÖ÷»ú
string hostName=textBox1.Text.Trim();
//¶Ë¿Ú
int port=Int32.Parse(textBox2.Text.Trim());
//µÃµ½Ö÷»úÐÅÏ¢
IPHostEntry ipInfo=Dns.GetHostByName(hostName);
//È¡µÃIPAddress[]
IPAddress[] ipAddr=ipInfo.AddressList;
//µÃµ½ip
IPAddress ip=ipAddr[0];
//×éºÏ³öÔ¶³ÌÖÕ½áµã
IPEndPoint hostEP=new IPEndPoint(ip,port);
//´´½¨Socket ʵÀý
Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
//³¢ÊÔÁ¬½Ó
socket.Connect(hostEP);
}
catch(Exception se)
{
MessageBox.Show("Á¬½Ó´íÎó"+se.Message,"ÌáʾÐÅÏ¢
,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);
}
//·¢Ë͸øÔ¶³ÌÖ÷»úµÄÇëÇóÄÚÈÝ´®
string sendStr="GET / HTTP/1.1\r\nHost: " + hostName +
"\r\nConnection: Close\r\n\r\n";
//´´½¨bytes×Ö½ÚÊý×éÒÔת»»·¢ËÍ´®
byte[] bytesSendStr=new byte[1024];
//½«·¢ËÍÄÚÈÝ×Ö·û´®×ª»»³É×Ö½ÚbyteÊý×é
bytesSendStr=Encoding.ASCII.GetBytes(sendStr);
try
{
//ÏòÖ÷»ú·¢ËÍÇëÇó
socket.Send(bytesSendStr,bytesSendStr.Length,0);
}
catch(Exception ce)
{
MessageBox.Show("·¢ËÍ´íÎó:"+ce.Message,"ÌáʾÐÅÏ¢
,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);
}
//ÉùÃ÷½ÓÊÕ·µ»ØÄÚÈݵÄ×Ö·û´®
string recvStr="";
//ÉùÃ÷×Ö½ÚÊý×飬һ´Î½ÓÊÕÊý¾ÝµÄ³¤¶ÈΪ1024×Ö½Ú
byte[] recvBytes=new byte[1024];
//·µ»ØÊµ¼Ê½ÓÊÕÄÚÈݵÄ×Ö½ÚÊý
int bytes=0;
//Ñ­»·¶ÁÈ¡£¬Ö±µ½½ÓÊÕÍêËùÓÐÊý¾Ý
while(true)
{
bytes=socket.Receive(recvBytes,recvBytes.Length,0);
//¶ÁÈ¡Íê³ÉºóÍ˳öÑ­»·
if(bytes¡´=0)
break;
//½«¶ÁÈ¡µÄ×Ö½ÚÊýת»»Îª×Ö·û´®
recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
}
//½«Ëù¶ÁÈ¡µÄ×Ö·û´®×ª»»Îª×Ö½ÚÊý×é
byte[] content=Encoding.ASCII.GetBytes(recvStr);
try
{
//´´½¨ÎļþÁ÷¶ÔÏóʵÀý
FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);
//дÈëÎļþ
fs.Write(content,0,content.Length);
}
catch(Exception fe)
{
MessageBox.Show("Îļþ´´½¨/дÈë´íÎó:"+fe.Message,"ÌáʾÐÅÏ¢",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);
}
//½ûÓÃSocket
socket.Shutdown(SocketShutdown.Both);
//¹Ø±ÕSocket
socket.Close();
}
}

³ÌÐòÔÚWindowsXPÖÐÎİ桢.Net Frameworkd ÖÐÎÄÕýʽ°æ¡¢Visual Studio.NetÖÐÎÄÕýʽ°æÏµ÷ÊÔͨ¹ý

¹ØÓÚ×÷Õß Ë몣¬96Äê±ÏÒµÓڳеÂʯÓÍѧԺµç×ÓÓëµçÆøÏµ¼ÆËã»úÓ¦ÓÃרҵ£¬Í¬Äê½øÈëÖйúʯÓÍÌìÈ»Æø¼¯ÍŹ«Ë¾Í¹þÓÍÌ﹤×÷£¬Ò»Ö±´ÓÊÂÍøÂç¹æ»®Ó뽨Éè¡¢ÍøÕ¾¼Ü¹¹ÓëÉè¼Æ£¬ÏÖרÃÅ´ÓÊÂInternetÓ¦ÓóÌÐò¿ª·¢¼°WindowsÓ¦ÓóÌÐò¿ª·¢¡£

Visual C#.NetÍøÂç³ÌÐò¿ª·¢-Tcpƪ

ǰһƪ¡¶Visual C#.NetÍøÂç³ÌÐò¿ª·¢-Socketƪ¡·ÖÐ˵µ½£ºÖ§³ÖHttp¡¢TcpºÍUdpµÄÀà×é³ÉÁËTCP/IPÈý²ãÄ£ÐÍ(ÇëÇóÏìÓ¦²ã¡¢Ó¦ÓÃЭÒé²ã¡¢´«Êä²ã)µÄÖмä²ã-Ó¦ÓÃЭÒé²ã£¬¸Ã²ãµÄÀà±ÈλÓÚ×îµ×²ãµÄSocketÀàÌṩÁ˸ü¸ß²ã´ÎµÄ³éÏó£¬ËüÃÇ·â×° TCP ºÍ UDP Ì×½Ó×ֵĴ´½¨£¬²»ÐèÒª´¦ÀíÁ¬½ÓµÄϸ½Ú£¬ÕâʹµÃÎÒÃÇÔÚ±àдÌ×½Ó×Ö¼¶±ðµÄЭÒéʱ£¬¿ÉÒÔ¸ü¶àµØ³¢ÊÔʹÓà TCPClient ¡¢ UDPClientºÍTcpListener£¬¶ø²»ÊÇÖ±½ÓÏò Socket ÖÐд¡£ËüÃÇÖ®¼äµÄÕâÖÖ²ã´Î¹ØÏµÊ¾ÒâÈçÏ£º

¿É¼û£¬ TcpClient Àà»ùÓÚ Socket À๹½¨£¬ÕâÊÇËüÄܹ»ÒÔ¸ü¸ßµÄ³éÏó³Ì¶ÈÌṩ TCP ·þÎñµÄ»ù´¡¡£ÕýÒòΪÕâÑù£¬Ðí¶àÓ¦ÓòãÉϵÄͨѶЭÒ飬±ÈÈçFTP(File Transfers Protocol)Îļþ´«ÊäЭÒé¡¢HTTP(Hypertext Transfers Protocol)³¬Îı¾´«ÊäЭÒéµÈ¶¼Ö±½Ó´´½¨ÔÚTcpClientµÈÀàÖ®ÉÏ¡£

TCPClient ÀàʹÓà TCP ´Ó Internet ×ÊÔ´ÇëÇóÊý¾Ý¡£TCP ЭÒ齨Á¢ÓëÔ¶³ÌÖÕ½áµãµÄÁ¬½Ó£¬È»ºóʹÓôËÁ¬½Ó·¢ËͺͽÓÊÕÊý¾Ý°ü¡£TCP ¸ºÔðÈ·±£½«Êý¾Ý°ü·¢Ë͵½ÖÕ½áµã²¢ÔÚÊý¾Ý°üµ½´ïʱÒÔÕýÈ·µÄ˳Ðò¶ÔÆä½øÐÐ×éºÏ¡£

´ÓÃû×ÖÉϾͿÉÒÔ¿´³ö£¬TcpClientÀàרΪ¿Í»§¶ËÉè¼Æ£¬ËüΪ TCP ÍøÂç·þÎñÌṩ¿Í»§¶ËÁ¬½Ó¡£TcpClient ÌṩÁËͨ¹ýÍøÂçÁ¬½Ó¡¢·¢ËͺͽÓÊÕÊý¾ÝµÄ¼òµ¥·½·¨¡£

ÈôÒª½¨Á¢ TCP Á¬½Ó£¬±ØÐëÖªµÀ³ÐÔØËùÐè·þÎñµÄÍøÂçÉ豸µÄµØÖ·(IPAddress)ÒÔ¼°¸Ã·þÎñÓÃÓÚͨѶµÄ TCP ¶Ë¿Ú (Port)¡£Internet ·ÖÅäºÅÂë»ú¹¹ (Internet Assigned Numbers Authority, IANA) ¶¨Ò幫¹²·þÎñµÄ¶Ë¿ÚºÅ£¨Äã¿ÉÒÔ·ÃÎÊ http://www.iana.org/assignments/port-numbers»ñµÃÕâ·½Ãæ¸üÏêϸµÄ×ÊÁÏ£©¡£IANA ÁбíÖÐËùûÓеķþÎñ¿ÉʹÓà 1,024 µ½ 65,535 ÕâÒ»·¶Î§ÖеĶ˿ںš£Òª´´½¨ÕâÖÖÁ¬½Ó£¬Äã¿ÉÒÔÑ¡ÓÃTcpClientÀàµÄÈýÖÖ¹¹Ô캯ÊýÖ®Ò»£º

1¡¢public TcpClient()µ±Ê¹ÓÃÕâÖÖ²»´øÈκβÎÊýµÄ¹¹Ô캯Êýʱ£¬½«Ê¹Óñ¾»úĬÈϵÄipµØÖ·²¢½«Ê¹ÓÃĬÈϵÄͨÐŶ˿ںÅ0¡£ÕâÑùÇé¿öÏ£¬Èç¹û±¾»ú²»Ö¹Ò»¸öipµØÖ·£¬½«ÎÞ·¨Ñ¡ÔñʹÓá£ÒÔÏÂÓï¾äʾÀýÁËÈçºÎʹÓÃĬÈϹ¹Ô캯ÊýÀ´´´½¨Ð嵀 TcpClient£º

  TcpClient tcpClientC = new TcpClient(); 

2¡¢public TcpClient(IPEndPoint)ʹÓñ¾»úIPEndPoint´´½¨TcpClientµÄʵÀý¶ÔÏó¡£ÉÏһƪ½éÉܹýÁË£¬IPEndPoint½«ÍøÂç¶Ëµã±íʾΪIPµØÖ·ºÍ¶Ë¿ÚºÅ£¬ÔÚÕâÀïËüÓÃÓÚÖ¸¶¨ÔÚ½¨Á¢Ô¶³ÌÖ÷»úÁ¬½ÓʱËùʹÓõı¾µØÍøÂç½Ó¿Ú£¨IP µØÖ·£©ºÍ¶Ë¿ÚºÅ£¬Õâ¸ö¹¹Ôì·½·¨ÎªÊ¹Óñ¾»úIPAddressºÍPortÌṩÁËÑ¡ÔñÓàµØ¡£ÏÂÃæµÄÓï¾äʾÀýÁËÈçºÎʹÓñ¾µØÖÕ½áµã´´½¨ TcpClient ÀàµÄʵÀý£º

   IPHostEntry ipInfo=Dns.GetHostByName("www.tuha.net");//Ö÷»úÐÅÏ¢ 
IPAddressList[] ipList=ipInfo.AddressList;//IPµØÖ·Êý×é
IPAddress ip=ipList[0];//¶àIPµØÖ·Ê±Ò»°ãÓõÚÒ»¸ö
IPEndPoint ipEP=new IPEndPoint(ip,4088);//µÃµ½ÍøÂçÖÕ½áµã
try{
TcpClient tcpClientA = new TcpClient(ipLocalEndPoint);
}
catch (Exception e ) {
Console.WriteLine(e.ToString());
}

µ½ÕâÀÄã¿ÉÄÜ»á¸Ðµ½À§»ó£¬¿Í»§¶ËÒªºÍ·þÎñ¶Ë´´½¨Á¬½Ó£¬ËùÖ¸¶¨µÄIPµØÖ·¼°Í¨ÐŶ˿ںÅÓ¦¸ÃÊÇÔ¶³Ì·þÎñÆ÷µÄѽ£¡ÊÂʵÉϵÄÈ·Èç´Ë£¬Ê¹ÓÃÒÔÉÏÁ½ÖÖ¹¹Ô캯Êý£¬ÄãËùʵÏÖµÄÖ»ÊÇTcpClientʵÀý¶ÔÏóÓëIPµØÖ·ºÍPort¶Ë¿ÚµÄ°ó¶¨£¬ÒªÍê³ÉÁ¬½Ó£¬Ä㻹ÐèÒªÏÔʽָ¶¨ÓëÔ¶³ÌÖ÷»úµÄÁ¬½Ó£¬Õâ¿ÉÒÔͨ¹ýTcpClientÀàµÄConnect·½·¨À´ÊµÏÖ£¬ Connet·½·¨Ê¹ÓÃÖ¸¶¨µÄÖ÷»úÃûºÍ¶Ë¿ÚºÅ½«¿Í»§¶ËÁ¬½Óµ½ Ô¶³ÌÖ÷»ú£º

 1)¡¢public void Connect(IPEndPoint); ʹÓÃÖ¸¶¨µÄÔ¶³ÌÍøÂçÖÕ½áµã½«¿Í»§¶ËÁ¬½Óµ½Ô¶³Ì TCP Ö÷»ú¡£ 

public void Connect(IPAddress, int); ʹÓÃÖ¸¶¨µÄ IP µØÖ·ºÍ¶Ë¿ÚºÅ½«¿Í»§¶ËÁ¬½Óµ½ TCP Ö÷»ú¡£

public void Connect(string, int); ½«¿Í»§¶ËÁ¬½Óµ½Ö¸¶¨Ö÷»úÉϵÄÖ¸¶¨¶Ë¿Ú¡£

ÐèÒªÖ¸³öµÄÊÇ£¬Connect·½·¨µÄËùÓÐÖØÔØÐÎʽÖеIJÎÊýIPEndPointÍøÂçÖÕ

½áµã¡¢IPAddressÒÔ¼°±íÏÖΪstringµÄDnsÖ÷»úÃûºÍintÖ¸³öµÄPort¶Ë¿Ú¾ùÖ¸µÄÊÇÔ¶³Ì·þÎñÆ÷¡£

ÒÔÏÂʾÀýÓï¾äʹÓÃÖ÷»úĬÈÏIPºÍPort¶Ë¿ÚºÅ0ÓëÔ¶³ÌÖ÷»ú½¨Á¢Á¬½Ó£º

TcpClient tcpClient = new TcpClient();//´´½¨TcpClient¶ÔÏóʵÀý
try{
tcpClient.Connect("www.contoso.com",11002);//½¨Á¢Á¬½Ó
}
catch (Exception e ){
Console.WriteLine(e.ToString());
}

3¡¢public TcpClient(string, int);³õʼ»¯ TcpClient ÀàµÄÐÂʵÀý²¢Á¬½Óµ½Ö¸¶¨Ö÷»úÉϵÄÖ¸¶¨¶Ë¿Ú¡£ÓëǰÁ½¸ö¹¹Ô캯Êý²»Ò»Ñù£¬Õâ¸ö¹¹Ô캯Êý½«×Ô¶¯½¨Á¢Á¬½Ó£¬Äã²»ÔÙÐèÒª¶îÍâµ÷ÓÃConnect·½·¨£¬ÆäÖÐstringÀàÐ͵IJÎÊý±íʾԶ³ÌÖ÷»úµÄDnsÃû£¬È磺www.tuha.net¡£

ÒÔÏÂʾÀýÓï¾äµ÷ÓÃÕâÒ»·½·¨ÊµÏÖÓëÖ¸¶¨Ö÷»úÃûºÍ¶Ë¿ÚºÅµÄÖ÷»úÏàÁ¬£º

 try{ 
TcpClient tcpClientB = new TcpClient("www.tuha.net", 4088);
}
catch (Exception e ) {
Console.WriteLine(e.ToString());
}

Ç°ÃæÎÒÃÇ˵,TcpClientÀà´´½¨ÔÚSocketÖ®ÉÏ£¬ÔÚTcp·þÎñ·½ÃæÌṩÁ˸ü¸ß²ã´ÎµÄ³éÏó,ÌåÏÖÔÚÍøÂçÊý¾ÝµÄ·¢ËͺͽÓÊÜ·½Ãæ,ÊÇTcpClientʹÓñê×¼µÄStreamÁ÷´¦Àí¼¼Êõ£¬Ê¹µÃËü¶ÁдÊý¾Ý¸ü¼Ó·½±ãÖ±¹Û£¬Í¬Ê±£¬.Net¿ò¼Ü¸ºÔðÌṩ¸ü·á¸»µÄ½á¹¹À´´¦ÀíÁ÷£¬¹á´©ÓÚÕû¸ö.Net¿ò¼ÜÖеÄÁ÷¾ßÓиü¹ã·ºµÄ¼æÈÝÐÔ£¬¹¹½¨ÔÚ¸üÒ»°ã»¯µÄÁ÷²Ù×÷ÉϵÄͨÓ÷½·¨Ê¹ÎÒÃDz»ÔÙÐèÒªÀ§»óÓÚÎļþµÄʵ¼ÊÄÚÈÝ£¨HTML¡¢XML »òÆäËûÈκÎÄÚÈÝ£©£¬Ó¦ÓóÌÐò¶¼½«Ê¹ÓÃÒ»Öµķ½·¨£¨Stream.Write¡¢Stream.Read£© ·¢ËͺͽÓÊÕÊý¾Ý¡£ÁíÍ⣬Á÷ÔÚÊý¾Ý´Ó Internet ÏÂÔØµÄ¹ý³ÌÖÐÌṩ¶ÔÊý¾ÝµÄ¼´Ê±·ÃÎÊ£¬¿ÉÒÔÔÚ²¿·ÖÊý¾Ýµ½´ïʱÁ¢¼´¿ªÊ¼´¦Àí£¬¶ø²»ÐèÒªµÈ´ýÓ¦ÓóÌÐòÏÂÔØÍêÕû¸öÊý¾Ý¼¯¡£.NetÖÐͨ¹ýNetworkStreamÀàʵÏÖÁËÕâЩ´¦Àí¼¼Êõ¡£

NetworkStream Àà°üº¬ÔÚ.Net¿ò¼ÜµÄSystem.Net.Sockets ÃüÃû¿Õ¼äÀ¸ÃÀàרÃÅÌṩÓÃÓÚÍøÂç·ÃÎʵĻù´¡Êý¾ÝÁ÷¡£NetworkStream ʵÏÖͨ¹ýÍøÂçÌ×½Ó×Ö·¢ËͺͽÓÊÕÊý¾ÝµÄ±ê×¼.Net ¿ò¼ÜÁ÷»úÖÆ¡£NetworkStream Ö§³Ö¶ÔÍøÂçÊý¾ÝÁ÷µÄͬ²½ºÍÒì²½·ÃÎÊ¡£NetworkStream ´Ó Stream ¼Ì³Ð£¬ºóÕßÌṩÁËÒ»×é·á¸»µÄÓÃÓÚ·½±ãÍøÂçͨѶµÄ·½·¨ºÍÊôÐÔ¡£

ͬÆäËü¼Ì³Ð×Ô³éÏó»ùÀàStreamµÄËùÓÐÁ÷Ò»Ñù£¬NetworkStreamÍøÂçÁ÷Ò²¿ÉÒÔ±»ÊÓΪһ¸öÊý¾ÝͨµÀ£¬¼ÜÉèÔÚÊý¾ÝÀ´Ô´¶Ë(¿Í»§Client)ºÍ½ÓÊÕ¶Ë£¨·þÎñServer£©Ö®¼ä£¬¶øºóµÄÊý¾Ý¶ÁÈ¡¼°Ð´Èë¾ùÕë¶ÔÕâ¸öͨµÀÀ´½øÐС£

.Net¿ò¼ÜÖУ¬NetworkStreamÁ÷Ö§³ÖÁ½·½ÃæµÄ²Ù×÷£º

1¡¢ дÈëÁ÷¡£Ð´ÈëÊÇ´ÓÊý¾Ý½á¹¹µ½Á÷µÄÊý¾Ý´«Êä¡£

2¡¢¶ÁÈ¡Á÷¡£¶ÁÈ¡ÊÇ´ÓÁ÷µ½Êý¾Ý½á¹¹£¨Èç×Ö½ÚÊý×飩µÄÊý¾Ý´«Êä¡£

ÓëÆÕͨÁ÷Stream²»Í¬µÄÊÇ£¬ÍøÂçÁ÷ûÓе±Ç°Î»ÖõÄͳһ¸ÅÄÒò´Ë²»Ö§³Ö²éÕҺͶÔÊý¾ÝÁ÷µÄËæ»ú·ÃÎÊ¡£ÏàÓ¦ÊôÐÔCanSeek ʼÖÕ·µ»Ø false£¬¶ø Seek ºÍ Position ·½·¨Ò²½«Òý·¢ NotSupportedException¡£

»ùÓÚSocketÉϵÄÓ¦ÓÃЭÒé·½Ãæ£¬Äã¿ÉÒÔͨ¹ýÒÔÏÂÁ½ÖÖ·½Ê½»ñÈ¡NetworkStreamÍøÂçÊý¾ÝÁ÷£º

1¡¢Ê¹ÓÃNetworkStream¹¹Ô캯Êý£ºpublic NetworkStream(Socket, FileAccess, bool);£¨ÓÐÖØÔØ·½·¨£©,ËüÓÃÖ¸¶¨µÄ·ÃÎÊȨÏÞºÍÖ¸¶¨µÄ Socket ËùÊôȨΪָ¶¨µÄ Socket ´´½¨ NetworkStream ÀàµÄÐÂʵÀý£¬Ê¹ÓÃǰÄãÐèÒª´´½¨Socket¶ÔÏóʵÀý£¬²¢Í¨¹ýSocket.Connect·½·¨½¨Á¢ÓëÔ¶³Ì·þÎñ¶ËµÄÁ¬½Ó£¬¶øºó²Å¿ÉÒÔʹÓø÷½·¨µÃµ½ÍøÂç´«ÊäÁ÷¡£Ê¾ÀýÈçÏ£º

Socket s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//´´½¨¿Í»§¶ËSocket¶ÔÏóʵÀý
try{
s.Connect("www.tuha.net",4088);//½¨Á¢ÓëÔ¶³ÌÖ÷»úµÄÁ¬½Ó
}
catch(Exception e){
MessageBox.show("Á¬½Ó´íÎó£º" +e.Message);
}
try{
NetworkStream stream=new NetworkStream(s,FileAccess.ReadWrite,false);//È¡µÃÍøÂç´«ÊäÁ÷
}

2¡¢Í¨¹ýTcpClient.GetStream·½·¨£ºpublic NetworkStream etStream();Ëü·µ»ØÓÃÓÚ·¢ËͺͽÓÊÕÊý¾ÝµÄ»ù´¡ÍøÂçÁ÷NetworkStream¡£GetStream ͨ¹ý½«»ù´¡ Socket ÓÃ×÷ËüµÄ¹¹Ô캯Êý²ÎÊýÀ´´´½¨ NetworkStream ÀàµÄʵÀý¡£Ê¹ÓÃǰÄãÐèÒªÏÈ´´TcpClient¶ÔÏóʵÀý²¢½¨Á¢ÓëÔ¶³ÌÖ÷»úµÄÁ¬½Ó£¬Ê¾ÀýÈçÏ£º

   TcpClient tcpClient = new TcpClient();//´´½¨TcpClient¶ÔÏóʵÀý 
Try{
tcpClient.Connect("www.tuha.net",4088);//³¢ÊÔÓëÔ¶³ÌÖ÷»úÏàÁ¬
}
catch(Exception e){
MessageBox.Show("Á¬½Ó´íÎó:"+e.Message);
}
try{
NetworkStream stream=tcpClient.GetStream();//»ñÈ¡ÍøÂç´«ÊäÁ÷
}
catch(Exception e)
{
MessageBox.Show("TcpClient´íÎó£º"+e.Message);
}

ͨ¹ýÒÔÉÏ·½·¨µÃµ½NetworkStreamÍøÂçÁ÷Ö®ºó,Äã¾Í¿ÉÒÔʹÓñê×¼Á÷¶Áд·½·¨WriteºÍReadÀ´·¢ËͺͽÓÊÜÊý¾ÝÁË¡£

ÒÔÉÏÊÇ.NetÏÂʹÓÃTcpClientÀàʵÏÖ¿Í»§¶Ë±à³ÌµÄ¼¼Êõ×ÊÁÏ£¬ÎªÁËÏò¿Í»§¶ËÌṩÕâЩ·þÎñ£¬ÎÒÃÇ»¹ÐèÒª±àÖÆÏàÓ¦µÄ·þÎñ¶Ë³ÌÐò£¬Ç°Ò»Æª¡¶Visual C#.NetÍøÂç³ÌÐò¿ª·¢-Socketƪ¡·ÉÏÔø¾­Ìáµ½£¬ Socket×÷ΪÆäËûÍøÂçЭÒéµÄ»ù´¡£¬¼È¿ÉÒÔÃæÏò¿Í»§¶Ë¿ª·¢£¬Ò²¿ÉÒÔÃæÏò·þÎñ¶Ë¿ª·¢£¬ÔÚ´«Êä²ãÃæÉÏʹÓý϶࣬¶øÔÚÓ¦ÓÃЭÒé²ãÃæÉÏ£¬¿Í»§¶ËÎÒÃDzÉÓù¹½¨ÓÚSocketÀàÖ®ÉϵÄTcpClientÈ¡´úSocket£»ÏàÓ¦µØ£¬¹¹½¨ÓÚSocketÖ®ÉϵÄTcpListenerÌṩÁ˸ü¸ßÀíÄî¼¶±ðµÄ TCP ·þÎñ£¬Ê¹µÃÎÒÃÇÄܸü·½±ãµØ±àд·þÎñ¶ËÓ¦ÓóÌÐò¡£ÕýÊÇÒòΪÕâÑùµÄÔ­Òò£¬ÏñFTP ºÍ HTTP ÕâÑùµÄÓ¦ÓòãЭÒé¶¼ÊÇÔÚ TcpListener ÀàµÄ»ù´¡ÉϽ¨Á¢µÄ¡£

.NetÖеÄTCPListener ÓÃÓÚ¼àÊÓTCP ¶Ë¿ÚÉϵĴ«ÈëÇëÇó£¬Í¨¹ý°ó¶¨±¾»úIPµØÖ·ºÍÏàÓ¦¶Ë¿Ú£¨ÕâÁ½ÕßÓ¦Óë¿Í»§¶ËµÄÇëÇóÒ»Ö£©´´½¨TcpListener¶ÔÏóʵÀý,²¢ÓÉStart·½·¨Æô¶¯ÕìÌý£»µ±TcpListenerÕìÌýµ½Óû§¶ËµÄÁ¬½Óºó£¬ÊÓ¿Í»§¶ËµÄ²»Í¬ÇëÇó·½Ê½£¬Í¨¹ýAcceptTcpClient ·½·¨½ÓÊÜ´«ÈëµÄÁ¬½ÓÇëÇó²¢´´½¨ TcpClient ÒÔ´¦ÀíÇëÇ󣬻òÕßͨ¹ýAcceptSocket ·½·¨½ÓÊÜ´«ÈëµÄÁ¬½ÓÇëÇó²¢´´½¨ Socket ÒÔ´¦ÀíÇëÇó¡£×îºó£¬ÄãÐèҪʹÓà Stop ¹Ø±ÕÓÃÓÚÕìÌý´«ÈëÁ¬½ÓµÄ Socket£¬Äã±ØÐëÒ²¹Ø±Õ¡£

´Ó AcceptSocket »ò AcceptTcpClient ·µ»ØµÄÈκÎʵÀý¡£Õâ¸ö¹ý³ÌÏêϸ½â˵ÈçÏ£º

Ê×ÏÈ£¬´´½¨TcpListener¶ÔÏóʵÀý£¬Õâͨ¹ýTcpListenerÀàµÄ¹¹Ôì·½·¨À´ÊµÏÖ£º

  public TcpListener(port);//Ö¸¶¨±¾»ú¶Ë¿Ú 
public TcpListener(IPEndPoint)//Ö¸¶¨±¾»úÖÕ½áµã
public TcpListener(IPAddress,port)//Ö¸¶¨±¾»úIPµØÖ·¼°¶Ë¿Ú

ÒÔÉÏ·½·¨ÖеIJÎÊýÔÚÇ°Ãæ¶à´ÎÌáµ½£¬ÕâÀï²»ÔÙϸÊö£¬Î¨Ò»ÐèÒªÌáÐѵÄÊÇ£¬ÕâЩ²ÎÊý¾ùÕë¶Ô·þÎñ¶ËÖ÷»ú¡£ÏÂÃæµÄʾÀýÑÝʾ´´½¨ TcpListener ÀàµÄʵÀý£º

   IPHostEntry ipInfo=Dns.Resolve("127.0.0.1");//Ö÷»úÐÅÏ¢ 
IPAddressList[] ipList=ipInfo.IPAddressList;//IPÊý×é
IPAddress ip=ipList[0];//IP
try{
TcpListener tcpListener = new TcpListener(ipAddress, 4088);//´´½¨TcpListener¶ÔÏóʵÀýÒÔÕìÌýÓû§¶ËÁ¬½Ó
}
catch ( Exception e){
MessageBox.Show("TcpListener´íÎó£º"+e.Message);
}


Ëæºó£¬ÄãÐèÒªµ÷ÓÃStart·½·¨Æô¶¯ÕìÌý£º

public void Start();

Ëæºó£¬ÄãÐèÒªµ÷ÓÃStart·½·¨Æô¶¯ÕìÌý£º

 public void Start();

Æä´Î£¬µ±ÕìÌýµ½ÓÐÓû§¶ËÁ¬½Óʱ£¬ÐèÒª½ÓÊÜ¹ÒÆðµÄÁ¬½ÓÇëÇó£¬Õâͨ¹ýµ÷ÓÃÒÔÏÂÁ½·½·¨Ö®Ò»À´Íê³ÉÁ¬½Ó£º

  public Socket AcceptSocket(); 
  public TcpClient AcceptTcpClient();

ǰһ¸ö·½·¨·µ»Ø´ú±í¿Í»§¶ËµÄSocket¶ÔÏó£¬Ëæºó¿ÉÒÔͨ¹ýSocket ÀàµÄ Send ºÍ Receive ·½·¨ÓëÔ¶³Ì¼ÆËã»úͨѶ£»ºóÒ»¸ö·½·¨·µ»Ø´ú±í¿Í»§¶ËµÄTcpClient¶ÔÏó£¬ËæºóʹÓÃÉÏÃæ½éÉÜµÄ TcpClient.GetStream ·½·¨»ñÈ¡ TcpClient µÄ»ù´¡ÍøÂçÁ÷ NetworkStream£¬²¢Ê¹ÓÃÁ÷¶ÁдRead/Write·½·¨ÓëÔ¶³Ì¼ÆËã»úͨѶ¡£

×îºó£¬Çë¼Çס¹Ø±ÕÕìÌýÆ÷£ºpublic void Stop();

ͬʱ¹Ø±ÕÆäËûÁ¬½ÓʵÀý£ºpublic void Close();

ÏÂÃæµÄʾÀýÍêÕûÌåÏÖÁËÉÏÃæµÄ¹ý³Ì£º

   bool done = false; 
TcpListener listener = new TcpListener(13);// ´´½¨TcpListener¶ÔÏóʵÀý(13ºÅ¶Ë¿ÚÌṩʱ¼ä·þÎñ)
listener.Start();//Æô¶¯ÕìÌý
while (!done) {//½øÈëÎÞÏÞÑ­»·ÒÔÕìÌýÓû§Á¬½Ó
TcpClient client = listener.AcceptTcpClient();//ÕìÌýµ½Á¬½Óºó´´½¨¿Í»§¶ËÁ¬½ÓTcpClient
NetworkStream ns = client.GetStream();//µÃµ½ÍøÂç´«ÊäÁ÷
byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString());//Ô¤·¢Ë͵ÄÄÚÈÝ(´ËΪ·þÎñ¶Ëʱ¼ä)ת»»Îª×Ö½ÚÊý×éÒÔ±ãдÈëÁ÷
try {
ns.Write(byteTime, 0, byteTime.Length);//дÈëÁ÷
ns.Close();//¹Ø±ÕÁ÷
client.Close();//¹Ø±Õ¿Í»§¶ËÁ¬½Ó
}
catch (Exception e) {
MessageBox.Show("Á÷´íÎó:"+e.Message)
}

×ÛºÏÔËÓÃÉÏÃæµÄ֪ʶ£¬ÏÂÃæµÄʵÀýʵÏÖÁ˼òµ¥µÄÍøÂçͨѶ-Ë«»ú»¥Á¬£¬Õë¶Ô¿Í»§¶ËºÍ·þÎñ¶Ë·Ö±ð±àÖÆÁËÓ¦ÓóÌÐò¡£¿Í»§¶Ë´´½¨µ½·þÎñ¶ËµÄÁ¬½Ó£¬ÏòÔ¶³ÌÖ÷»ú·¢ËÍÁ¬½ÓÇëÇóÁ¬½ÓÐźţ¬²¢·¢Ëͽ»Ì¸ÄÚÈÝ£»Ô¶³ÌÖ÷»ú¶Ë½ÓÊÕÀ´×Ô¿Í»§µÄÁ¬½Ó£¬Ïò¿Í»§¶Ë·¢»ØÈ·ÈÏÁ¬½ÓµÄÐźţ¬Í¬Ê±½ÓÊÕ²¢ÏÔʾ¿Í»§¶ËµÄ½»Ì¸ÄÚÈÝ¡£ÔÚÕâ¸ö»ù´¡ÉÏ£¬·¢»ÓÄãµÄ´´ÔìÁ¦£¬ÄãÍêÈ«¿ÉÒÔ¿ª·¢³öÒ»¸ö»ùÓÚ³ÌÐòÓïÑÔ(C#)¼¶µÄÁÄÌìÊÒ£¡

¿Í»§¶ËÖ÷ÒªÔ´´úÂ룺

 public void SendMeg()//·¢ËÍÐÅÏ¢ 
{
try
{


int port=Int32.Parse(textBox3.Text.ToString());//Ô¶³ÌÖ÷»ú¶Ë¿Ú
try
{
tcpClient=new TcpClient(textBox1.Text,port);//´´½¨TcpClient¶ÔÏóʵÀý }
catch(Exception le)
{
MessageBox.Show("TcpClient Error:"+le.Message);
}
string strDateLine=DateTime.Now.ToShortDateString()+" "+DateTime.Now.ToLongTimeString();//µÃµ½·¢ËÍʱ¿Í»§¶Ëʱ¼ä
netStream=tcpClient.GetStream();//µÃµ½ÍøÂçÁ÷
sw=new StreamWriter(netStream);//´´½¨TextWriter,ÏòÁ÷ÖÐд×Ö·û
string words=textBox4.Text;//´ý·¢Ë͵ϰ
string content=strDateLine+words;//´ý·¢ËÍÄÚÈÝ
sw.Write(content);//дÈëÁ÷
sw.Close();//¹Ø±ÕÁ÷дÈëÆ÷
netStream.Close();//¹Ø±ÕÍøÂçÁ÷
tcpClient.Close();//¹Ø±Õ¿Í»§¶ËÁ¬½Ó
}
catch(Exception ex)
{
MessageBox.Show("Sending Message Failed!"+ex.Message);
}
textBox4.Text="";//Çå¿Õ
}


·þÎñÆ÷¶ËÖ÷ÒªÔ´´úÂ룺

public void StartListen()//ÕìÌýÌØ¶¨¶Ë¿ÚµÄÓû§ÇëÇó
{
//ReceiveMeg();
isLinked=false; //Á¬½Ó±êÖ¾
try
{
int port=Int32.Parse(textBox1.Text.ToString());//±¾µØ´ýÕìÌý¶Ë¿Ú
serverListener=new TcpListener(port);//´´½¨TcpListener¶ÔÏóʵÀý
serverListener.Start(); //Æô¶¯ÕìÌý
}
catch(Exception ex)
{
MessageBox.Show("Can¡®t Start Server"+ex.Message);
return;
}
isLinked=true;
while(true)//½øÈëÎÞÏÞÑ­»·µÈ´ýÓû§¶ËÁ¬½Ó
{
try
{
tcpClient=serverListener.AcceptTcpClient();//´´½¨¿Í»§¶ËÁ¬½Ó¶ÔÏó
netStream=tcpClient.GetStream();//µÃµ½ÍøÂçÁ÷
sr=new StreamReader(netStream);//Á÷¶ÁдÆ÷
}
catch(Exception re)
{
MessageBox.Show(re.Message);
}
string buffer="";
string received="";
received+=sr.ReadLine();//¶ÁÁ÷ÖÐÒ»ÐÐ
while(received.Length!=0)
{
buffer+=received;
buffer+="\r\n";
//received="";
received=sr.ReadLine();
}
listBox1.Items.Add(buffer);//ÏÔʾ
//¹Ø±Õ
sr.Close();
netStream.Close();
tcpClient.Close();
}
}

   
2914 ´Îä¯ÀÀ       30
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

ʹÓÃdecj¼ò»¯Webǰ¶Ë¿ª·¢
Web¿ª·¢¿ò¼ÜÐγÉÖ®ÂÃ
¸üÓÐЧÂʵÄʹÓÃVisual Studio
MVP+WCF+Èý²ã½á¹¹´î½¨¿ò¼Ü
ASP.NETÔËÐлúÖÆÇ³Îö¡¾Í¼½â¡¿
±àд¸üºÃµÄC#´úÂë
10¸öVisual Studio¿ª·¢µ÷ÊÔ¼¼ÇÉ

.NET¿ò¼ÜÓë·Ö²¼Ê½Ó¦Óüܹ¹Éè¼Æ
.NET & WPF & WCFÓ¦Óÿª·¢
UML&.Net¼Ü¹¹Éè¼Æ
COM×é¼þ¿ª·¢
.NetÓ¦Óÿª·¢
InstallShield

ÈÕÕÕ¸Û .NET Framework & WCFÓ¦Óÿª·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ
±±¾© .NetÓ¦ÓÃÈí¼þϵͳ¼Ü¹¹
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
ÈüÃÅÌú¿Ë C#Óë.NET¼Ü¹¹Éè¼Æ
¹ã¶«ºËµç .NetÓ¦ÓÃϵͳ¼Ü¹¹