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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
C#ʹÓÃTCP/UDPЭÒéͨÐŲ¢ÓÃWireshark×¥°ü·ÖÎöÊý¾Ý
 
 
  3164  次浏览      28
 2020-11-16  
 
±à¼­ÍƼö:

±¾ÎÄÉæ¼°¼¸¸öÄÚÈÝ Wireshark×¥°üÈí¼þÏÂÔØ°²×°¡¢¿ØÖÆÌ¨³ÌÐòʹÓà UDP ͨÐÅ¡¢Form´°¿Ú³ÌÐòʹÓà TCP ͨÐŵÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚweixiuzhan.cn£¬ÓÉ»ðÁú¹ûAnna±à¼­ÍƼö

±¾ÎÄÕÂÖ÷Òª½²ÊöʹÓà VS2019 ±àд C# ³ÌÐò£¬²¢Í¨¹ý UDP/TCP ½øÐÐͨÐÅ£¬Ê¹Óà Wireshark ×¥°üÈí¼þץȡ·¢Ë͵İü²¢·ÖÎöÊý¾Ý½á¹¹£¬ÓÉÓÚÉæ¼°µ½¿Í»§¶ËºÍͨÐŶˣ¬¿ÉÒÔʹÓÃÁ½Ì¨µçÄÔ£¬Ò»Ì¨µçÄÔ±àд¿Í»§¶Ë´úÂ룬һ̨µçÄÔ±àд·þÎñÆ÷¶Ë´úÂ룬Ҳ¿ÉÒÔÔÚһ̨µçÄÔÉÏ¿ªÁ½¸ö VS2019 ͬʱ±àÒëÁ½¸ö¶Ë£¬¿´×Ô¼ºµÄÑ¡Ôñ¡£

ʵÑé»·¾³£º Window 10 ϵͳ

¿ª·¢¹¤¾ß£º Visual Studio 2019

ʹÓù¤¾ß£º Wireshark 3.4.0

Ò»¡¢Wireshark×¥°üÈí¼þÏÂÔØ°²×°

ÏÂÔØ Wireshark °²×°°ü£¬µã»÷ÏÂÃæµÄÁ´½ÓÌáÈ¡£¬ÀïÃæÓÐ 2.6.4 ºÍ 3.2.7 °æ±¾µÄ

×¢£ºÎÒ°²×° 3.2.7 °æ±¾µÄʱºò°²×°±¨´í1603£¬°Ù¶ÈÁ˺þö¼Ã»½â¾ö£¬µ«ÎÒÊÒÓѰ²×°Ê±²¢Ã»ÎÊÌ⣬ËùÒÔÎÒ°²×°µÄÊÇ 2.6.4 °æ±¾µÄ£¬¿ÉÄÜÊÇÎÒȱÉÙij¸ö°ü£¬Äã¿É×ÔÐÐÑ¡Ôñ°æ±¾°²×°¡£

Á´½Ó

ÌáÈ¡Â룺vbli

ÏÂÔØºÃºó£¬¾Í¿ªÊ¼À´°²×°£¨°æ±¾²»Í¬£¬µ«Êǰ²×°µÄ²½ÖèÒ»Ñù£¬³ýÁ˺óÐøÎÒ°²×°Á˶îÍâµÄ WinPcap ×é¼þ£¬¿ÉÄÜÕâ¾ÍÊÇÎÒµçÄÔȱÉٵİɣ¬°¥£©¡£

´ò¿ª Wireshark-win64-2.6.4.exe Îļþ¡£

µã»÷ ¡° Next > ¡±¡£

µã»÷ ¡° I Agree ¡±¡£

µã»÷ ¡° Next > ¡±¡£

¹´Ñ¡ÉÏ ¡° Wireshark Desktop Icon ¡±£¬Òâ˼Ϊ´´½¨×ÀÃæ¿ì½Ý·½Ê½£¬ÔÙµã»÷ ¡° Next > ¡±¡£

Ñ¡Ôñ±£´æÄ¿Â¼£¬ÔÙµã»÷ ¡° Next > ¡±¡£

µã»÷ ¡° Next > ¡±¡£

µã»÷ ¡° Install ¡±¡£

È»ºóµ¯³öÒ»¸ö´°¿Ú£¬µã»÷ ¡° ÊÇ ¡± £¬ºóÓÖµ¯³öÒ»¸ö´°¿Ú£¬µã»÷ ¡° Next > ¡±¡£

µã»÷ ¡° I Agree ¡±¡£

µã»÷ ¡° Install ¡±¡£

µã»÷ ¡° Finish ¡±¡£

È»ºó Wireshark ¼ÌÐø°²×°¡£

°²×°Íê³Éºó£¬µã»÷ ¡° Next > ¡±¡£

µã»÷ ¡° Finish ¡±¡£

ÖÁ´Ë£¬Wireshark ¾Í°²×°Íê³ÉÁË£¡ºÃ¼¤¶¯£¡£¡£¡

¶þ¡¢¿ØÖÆÌ¨³ÌÐòʹÓà UDP ͨÐÅ

±¾²¿·ÖÄÚÈÝ£º Óà C# ±àдһ¸öÃüÁîÐÐ/¿ØÖÆÌ¨ hello world ³ÌÐò£¬ÊµÏÖÈçϹ¦ÄÜ£ºÔÚÆÁÄ»ÉÏÁ¬ÐøÊä³ö 50 ÐÐ ¡° hello cqjtu£¡Öؽ»ÎïÁª2018¼¶ ¡± £»Í¬Ê±´ò¿ªÒ»¸öÍøÂç UDP Ì×½Ó×Ö£¬ÏòÊÒÓѵçÄÔ»òÊ÷Ý®ÅÉ·¢ËÍÕâ 50 ÐÐÏûÏ¢¡£

³ÌÐòʵÏÖ¹¦ÄÜ£º ´Ó¿Í»§¶ËÑ­»··¢ËͶàÌõÊý¾Ý£¬·þÎñÆ÷¶Ë½ÓÊÕ¶àÌõÊý¾Ý¡£

½ÓÏÂÀ´ÎÒÃÇ´´½¨Ò»¸öÐ嵀 C# ¿ØÖÆÌ¨³ÌÐò¡£

1£©´´½¨ÐÂÏîÄ¿

´ò¿ª VS2019 £¬µã»÷ ¡° ´´½¨ÐÂÏîÄ¿ ¡±

Ñ¡Ôñ ¡° ¿ØÖÆÌ¨Ó¦ÓÃ(.NET Framework) ¡± £¬È»ºóµã»÷ ¡° ÏÂÒ»²½ ¡±¡£

±à¼­ ¡° ÏîÄ¿Ãû³Æ ¡± £¬Ñ¡Ôñ³ÌÐò±£´æÎ»Öã¬È»ºóµã»÷ ¡° ´´½¨ ¡±¡£

´´½¨Íê±Ï¾ÍÈçÏÂÏÔʾ¡£

2£©±àд´úÂë

ÔÚ¿ØÖÆÌ¨Éϼòµ¥Êä³ö£º

ÔÚ Main º¯ÊýÄÚÊéдÈçϵĴúÂ루¹¦ÄÜ£ºÁ¬ÐøÊä³ö 50 ÐÐÊý¾Ý£©

for(int i = 0; i < 50; i++)

{

Console.WriteLine("µÚ{0}ÐУºhello cqjtu£¡Öؽ»ÎïÁª2018¼¶", (i + 1));

}

System.Console.ReadKey();

±àÒëÊä³ö½á¹û¡£

ʹÓà UDP ͨÐÅ£º

ÕâÒ»²¿·Ö±àдһ¸ö¼òµ¥µÄ UDP ͨÐÅʵÀý£¬ÏÂÒ»²¿·Öд¸ö¸ü¸´ÔÓÒ»µãµÄ TCP ͨÐÅ¡£

Ŀǰ×îÆÕ±éµÄ·þÎñģʽÊÇ C/S ģʽ£¬ËùÒÔÐèÒªÒ»¸ö¿Í»§¶Ë client ºÍÒ»¸ö·þÎñ¶Ë Server £¬À´ÊµÏÖͨÐÅ¡£

±ÈÈçÎÒÏÖÔÚÔÚÎҵĵçÄÔÉÏÔËÐÐÒ»¸ö¿Í»§¶Ë´úÂ룬ÔÚÎÒÊÒÓѵĵçÄÔÉÏÔËÐÐÒ»¸ö·þÎñ¶ËµÄ´úÂ룬¾Í¿ÉÒÔʵÏÖͨÐŹ¦ÄÜ¡£

ÔÚÎÒ×Ô¼ºµÄµçÄÔÉÏʹÓà VS2019 ´´½¨Ò»¸öÐÂÏîÄ¿ client £¬²¢½«ÏÂÁдúÂë¸´ÖÆÕ³Ìù½øÈ¥¡££¨×¢ÒâÍ·Îļþ£¡£¡£¡Ê¹ÓÃÍøÂçЭÒéÐèÒªÒýÈëÍ·Îļþ .Net ºÍ .Net.Sockets£©

¿Í»§¶Ë£º

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace Client
{
class Program
{
static void Main(string[] args)
{
//ÌáʾÐÅÏ¢
Console.WriteLine("°´ÏÂÈÎÒâ°´¼ü¿ªÊ¼·¢ËÍ...");
Console.ReadKey();

int m;

//×öºÃÁ´½Ó×¼±¸
UdpClient client = new UdpClient(); //ʵÀýÒ»¸ö¶Ë¿Ú
IPAddress remoteIP = IPAddress.Parse("10.60.202.32"); //¼ÙÉè·¢Ë͸øÕâ¸öIP
int remotePort = 11000; //ÉèÖö˿ںÅ
IPEndPoint remotePoint = new IPEndPoint(remoteIP, remotePort); //ʵÀý»¯Ò»¸öÔ¶³Ì¶Ëµã

for(int i = 0; i < 50; i++)
{
//Òª·¢Ë͵ÄÊý¾Ý£ºµÚnÐУºhello cqjtu£¡Öؽ»ÎïÁª2018¼¶
string sendString = null;
sendString += "µÚ";
m = i+1;
sendString += m.ToString();
sendString += "ÐУºhello cqjtu£¡Öؽ»ÎïÁª2018¼¶";

//¶¨Òå·¢Ë͵Ä×Ö½ÚÊý×é
//½«×Ö·û´®×ª»¯Îª×Ö½Ú²¢´æ´¢µ½×Ö½ÚÊý×éÖÐ
byte[] sendData = null;
sendData = Encoding.Default.GetBytes(sendString);

client.Send (sendData, sendData.Length, remotePoint);//½«Êý¾Ý·¢Ë͵½Ô¶³Ì¶Ëµã
}
client.Close();//¹Ø±ÕÁ¬½Ó

//ÌáʾÐÅÏ¢
Console.WriteLine("");
Console.WriteLine("Êý¾Ý·¢Ëͳɹ¦£¬°´ÈÎÒâ¼üÍ˳ö...");
System.Console.ReadKey();
}
}
}

´úÂëÁ÷³Ì£º

¢ÙÊ×ÏÈÏÔʾÌáʾÐÅÏ¢£¬µÈ´ýʹÓÃÈËÔ±²Ù×÷£»

¢Ú×öºÃÁ¬½Ó×¼±¸£¬È磺ÉèÖÃIP¡¢¶Ë¿ÚºÅµÈ£»

¢Û for Ñ­»··¢ËÍÊý¾Ý£»

¢Ü¹Ø±Õ¶Ë¿Ú£»

¢ÝÏÔʾÌáʾÐÅÏ¢£¬µÈ´ýÓû§È·ÈÏÍ˳ö¡£

ÔÚÎÒÊÒÓѵĵçÄÔÉÏʹÓà VS2019 ´´½¨Ò»¸öÐÂÏîÄ¿ server£¬²¢½«ÏÂÁдúÂë¸´ÖÆÕ³Ìù½øÈ¥¡£

·þÎñÆ÷¶Ë£º

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace Server
{
class Program
{
static void Main(string[] args)
{
int result;
string str = "µÚ50ÐУºhello cqjtu£¡Öؽ»ÎïÁª2018¼¶";
UdpClient client = new UdpClient(11000);
string receiveString = null;
byte[] receiveData = null;
//ʵÀý»¯Ò»¸öÔ¶³Ì¶Ëµã£¬IPºÍ¶Ë¿Ú¿ÉÒÔËæÒâÖ¸¶¨£¬µÈµ÷ÓÃclient.Receive(ref remotePoint)ʱ»á½«¸Ã¶Ëµã¸Ä³ÉÕæÕý·¢ËͶ˶˵ã
IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("ÕýÔÚ×¼±¸½ÓÊÕÊý¾Ý...");
while (true)
{
receiveData = client.Receive (ref remotePoint);//½ÓÊÕÊý¾Ý
receiveString = Encoding.Default.GetString (receiveData);
Console.WriteLine (receiveString);
result = String.Compare (receiveString, str);
if (result == 0)
{
break;
}
}
client.Close();//¹Ø±ÕÁ¬½Ó
Console.WriteLine("");
Console.WriteLine("Êý¾Ý½ÓÊÕÍê±Ï£¬°´ÈÎÒâ¼üÍ˳ö...");
System.Console.ReadKey();
}
}
}

´úÂëÁ÷³Ì£º

¢Ù×öºÃÁ¬½Ó×¼±¸£¬²¢ÉèÖýáÊø±êÖ¾£»

¢ÚÑ­»·½ÓÊÕÊý¾Ý£»

¢Û¹Ø±ÕÁ¬½Ó£»

¢ÜÏÔʾÌáʾÐÅÏ¢£¬µÈ´ýÓû§È·¶¨Í˳ö¡£

3£©±àÒë½á¹û

¿Í»§¶Ë£º

·þÎñ¶Ë£º

4£©×¥°ü·ÖÎöÊý¾Ý

ÔÚ×ÀÃæË«»÷´ò¿ªÖ®Ç°ÏÂÔØµÄ Wireshark ¡£

ÓÉÓÚÎÒʹÓõÄÍøÏßÁ¬½Ó£¬ËùÒÔÊÇͨ¹ýÒÔÌ«ÍøÍ¨Ðŵģ¬Ë«»÷ ¡° ÒÔÌ«Íø ¡±¡£

¿ÉÒÔ¿´µ½ÏÖÔÚ Wireshark ²»¶ÏµÄÔÚ×¥°ü£¬Ïȵã»÷ºìÉ«µÄ°´Å¥ÔÝÍ£×¥°ü¡£

ÖØÐ±àÒë¿Í»§¶ËºÍ·þÎñÆ÷¶Ë£¬ÏȲ»Òª°´Ï°´¼ü·¢ËÍÊý¾Ý£¬ÏȹÒ×Å£¬¿´ÏÂÒ»²½¡£

µã»÷öèÓãÓã÷¢µÄͼ±ê£¬È»ºóµã»÷ ¡° Continue without Saving ¡±£¬²»±£´æÖ®Ç°×¥È¡µÄ°ü¡£

È»ºó°´¼üÅÌ¿ªÊ¼·¢ËÍÊý¾Ý£¬·¢ËÍÍêºó£¬µã»÷ Wireshark µÄºìÉ«°´Å¥£¬Í£Ö¹×¥°ü¡£

ÔÚ·½¿òÄÚÊäÈë ¡° UDP ¡± ¹ýÂ˰ü£¬È»ºó¾Í¿ÉÒÔ¿´µ½ÏÂÃæµÄÐÅÏ¢£¬ÕâЩ¾ÍÊÇÎÒ·¢Ë͸øÎÒÊÒÓѵçÄÔÉ쵀 50 ÌõÊý¾Ý£¬ÏÂÃæ¿ªÊ¼·ÖÎöÕâЩÊý¾Ý£¬Ö»Ñ¡ÔñÆäÖÐÒ»Ìõ·ÖÎö¡£

ÔÚ×¥°ü·ÖÎöÊý¾Ý֮ǰ£¬ÏÈÓÐÒ»¸öÍøÂçЭÒé²ãµÄ¸ÅÄÖ÷»úÉϵÄÊý¾Ý¶¼ÊÇ´ÓÓ¦Óòã¡úÔËÊä²ã¡úÍøÂç²ã¡úÊý¾ÝÁ´Â·²ã¡úÎïÀí²ã£¨±ÈÌØÁ÷£¬Ò²¾ÍÊǶþ½øÖÆ£¬¸ßµÍµçƽ£©¡£

Ñ¡ÖÐ Ethernet £¬Õâ¾ÍÊÇÊý¾ÝÁ´Â·²ãµÄÖ¡µÄÍ·²¿£¬ÏàÓ¦µÄÏÂÃæÀ¶É«²¿·ÖµÄÊ®Áù½øÖÆ£¬¾ÍÊÇÏàÓ¦µÄÖ¡Í·²¿Êý¾Ý¡£

Ò»¸öÖ¡µÄÍ·²¿µÄÖ÷Òª½á¹¹ÊÇ£º

Ä¿µÄµØÖ·£¨Destination£©£ºÊý¾ÝµÄ½ÓÊÕ·½£¬ÕâÀïÊÇ£º10.60.202.32£»

Ô´µØÖ·£¨Source£©£ºÊý¾ÝµÄ·¢ËÍ·½£¬ÕâÀïÊÇ£º10.60.191.19£»

Êý¾ÝÀàÐÍ£¨Type£©£º·ÖΪ IP(0800) °üºÍ ARP(0806) °ü£¬Õâ¸ö°üÊÇ 0800 £¬ËùÒÔÊÇ IP °ü¡£

Êý¾Ý£ººóÃæÈýÅÅ£¬ÉÏ²ã£¨ÍøÂç²ã£©´«ÏÂÀ´µÄÒ»¸ö IP °ü£¬Êý¾Ý²¿·ÖÓÖ·ÖΪÊý¾Ý²¿·ÖºÍÌî³ä²¿·Ö£¬µ±Õâ¸ö IP °üµÄ³¤¶ÈСÓÚ 46 ¸ö×Ö½Ú£¬±ÈÈçÊý¾Ý²¿·Ö³¤¶ÈΪ 30 £¬ÄÇôÌî³ä²¿·Ö£¨À¬»øÐÅÏ¢£©¾ÍÊÇ 16 ¸ö×Ö½Ú£¬±£Ö¤Õâ¸öÖ¡µÄ×ܳ¤¶È×î¶ÌΪ 64 ¸ö×Ö½Ú£¨ÆäÔ­Òò¿É×ÔÐаٶȣ©£¬Èç¹ûÊý¾Ý²¿·Ö³¤¶ÈΪ50£¬ÄÇôÌî³ä²¿·Ö¾ÍΪ 0 ¸ö×Ö½Ú£¬×îºó£¬Êý¾Ý£¨Êý¾Ý²¿·Ö + Ìî³ä²¿·Ö£©µÄ³¤¶È×Ϊ 1500 ¸ö×Ö½Ú£¬²»Äܹý´ó£¬ËùÒÔÖ¡µÄ×ܳ¤¶È×Ϊ 1518 ×Ö½Ú£¬×¥È¡µÄËùÓаü£¬¶¼²»»á³¬¹ýÕâ¸ö³¤¶È¡£

УÑéÂ룺֡µÄĩβÓÐ 4 ×Ö½ÚµÄУÑéÂ룬µ«ÊÇ×¥°üÈí¼þ»á×Ô¶¯ÉáÈ¥¡£

ÔÙÀ´·ÖÎöÒ»ÏÂÍøÂç²ãµÄ IP °ü£º

Version£¨°æ±¾ºÅ£©£º·ÖΪ IPv4 ºÍ IPv6 ÏÖÔÚÆÕ±é¶¼ÓÃµÄ IPv4 £¬ËùÒÔֵΪ 4 £¬1 ¸ö×Ö½Ú£»

HLen£¨ip±¨Í·³¤¶È£©£º32λ×ֵı¨Í·³¤¶È(HLEN)£»

TOS£¨¼¶±ð£©£º·þÎñÀàÐÍÃèÊöÊý¾Ý±¨½«ÈçºÎ±»´¦Àí£¬±ÈÈçÓÅÏÈ·¢Ë͵ȣ¬´ó¶àÊý¶¼ÊÇĬÈÏΪ 0 £»

Datagram Total Length£¨×ܳ¤¶È£©£º°üÀ¨±¨Í·ºÍÊý¾ÝµÄÊý¾Ý°ü³¤¶È£»

identifier£¨±êʶ£©£ºÎ¨Ò»µÄ IP Êý¾Ý°üÖµ£»

Flags£¨±êÖ¾£©£ºËµÃ÷ÊÇ·ñÓÐÊý¾Ý±»·Ö¶Î£¬ÎÒÊÇÒ»ÌõÒ»ÌõµÄ·¢ËͶà¸öÊý¾Ý°ü£¬Ã¿¸ö°üµÄÊý¾ÝºÜС£¬Ã»Óб»·Ö¶Î£¬ËùÒÔÕâÀïÊýֵΪ 0 ¡£

Fragmentation Offset£¨·Ö¶ÎÆ«ÒÆ£©£ºÈç¹ûÊý¾Ý°üÔÚ×°ÈË֡ʱ̫´ó,ÔòÐèÒª½øÐзֶκÍÖØ×飬ÕâÀïûÓзֶΣ¬ËùÒÔÆ«ÒÆÁ¿Îª 0 £»

TTL£¨´æ»îÆÚ£©£º´æ»îÆÚÊÇÔÚÊý¾Ý°ü²úÉúʱ½¨Á¢ÔÚÆäÄÚ²¿µÄÒ»¸öÉèÖã¬Èç¹ûÕâ¸öÊý¾Ý°üÔÚÕâ¸öTTLµ½ÆÚʱÈÔûÓе½´ïËüҪȥµÄÄ¿µÄµØ,ÄÇôËü½«±»¶ªÆú£¬Õâ¸öÉèÖý«·ÀÖ¹IP°üÔÚѰÕÒÄ¿µÄµØµÄʱºòÔÚÍøÂçÖв»¶ÏÑ­»·£¬Ã¿¾­¹ýÒ»¸ö·ÓÉÆ÷£¬ËüµÄÖµ¾Í¼õÒ»£¬ÕâÀïËüµÄֵΪ 128 £¬Ò²¾ÍÊÇ 128 ¸öÉú´æÆÚ£»

Protocol£¨Ð­Ò飩£ºÉϲãЭÒéµÄ¶Ë¿Ú£¨ TCP ÊÇ¶Ë¿Ú 6£»UDP ÊÇ¶Ë¿Ú 17£© £¬Í¬ÑùÒ²Ö§³ÖÍøÂç²ãЭÒé,ÈçARPºÍICMP£¬ÕâÀïֵΪ 17 £¬Ò²¾ÍÊÇ UDP ЭÒ飻

Header Checksum£¨Ð£ÑéÂ룩£ºÖ»Õë¶Ô±¨Í·µÄÑ­»·ÈßÓàУÑé(CRC)£»

Source Address£¨Ô´µØÖ·£©£ºÏûÏ¢·¢ËÍÕßµÄ ip µØÖ·£¬ÕâÀïÊÇ10.60.191.19£»

Destination Address£¨Ä¿µÄµØÖ·£©£ºÏûÏ¢½ÓÊÕÕßµÄ ip µØÖ·£¬ÕâÀïÊÇ10.60.202.32£»

ip°üÍ·µÄµÚÁùÐУºÓÃÓÚÍøÂç¼ì²â¡¢µ÷ÊÔ¡¢°²È«ÒÔ¼°¸ü¶àµÄÄÚÈÝ£¬²»¹ý´ó¶àÊýÇé¿ö¶¼ÊÇĬÈÏΪ 0 µÄ£»

×îºóÀ´¿´Ò»ÏÂÊý¾Ý°ü£º

¿ÉÒÔºÜÏÔÈ»¿´µ½£¬³¤¶ÈΪ 34 ×Ö½Ú£¬¶ÔÓ¦µÄÊ®Áù½øÖƾÍÊÇÀ¶É«µÄÇøÓòÁË£¬Õâ¾ÍÊÇÎÒÃÇÒª·¢Ë͵ÄÊý¾Ý£ºµÚnÐУºhello cqjtu£¡Öؽ»ÎïÁª2018¼¶¡£

µ½´Ë£¬Ò»¸ö UDP °ü¾Í·ÖÎöÍêÁË¡£

ÏÂÃæÑÝʾÈçºÎͨ¹ý´°¿Ú³ÌÐòʹÓà TCP ͨÐÅ£¬²¢×¥°ü·ÖÎöһϠTCP °ü¡£

Èý¡¢Form´°¿Ú³ÌÐòʹÓà TCP ͨÐÅ

±¾²¿·ÖÄÚÈÝ£º Óà VS2019 µÄ C# ±àдһ¸ö¼òµ¥µÄ Form ´°¿Ú³ÌÐò£¬ÓÐÒ»¸öÎı¾¿ò textEdit ºÍÒ»¸ö·¢ËͰ´Å¥ button £¬ÔËÐгÌÐòºó£¬¿ÉÒÔÔÚÎı¾¿òÀïÊäÈëÎÄ×Ö£¬Èç ¡° hello cqjtu£¡Öؽ»ÎïÁª2018¼¶ ¡± £¬µã»÷ button £¬½«ÕâЩÎÄ×Ö·¢Ë͸øÊÒÓѵçÄÔ»òÊ÷Ý®ÅÉ£¬²ÉÓà TCP Ì×½Ó×Ö£»

³ÌÐòʵÏÖ¹¦ÄÜ£º ´Ó¿Í»§¶Ë·¢ËͶàÌõÊý¾Ý£¬·þÎñÆ÷¶Ë½ÓÊÕ¶àÌõÊý¾Ý£¬·þÎñÆ÷¶Ë·´À¡·¢ËÍÐÅÏ¢¸ø¿Í»§¶Ë£¬¿Í»§¶ËÊÕµ½²¢ÏÔʾ³öÀ´¡£

½ÓÏÂÀ´£¬ÎÒÃÇ´´½¨Ò»¸öÐ嵀 C# Form ´°¿Ú³ÌÐò¡£

1£©´´½¨ÐÂÏîÄ¿

Ñ¡ÖÐ ¡° Windows ´°ÌåÓ¦Óà ¡± £¬ÔÙµã»÷ ¡° ÏÂÒ»²½ ¡±¡£

ÉèÖÃÏîÄ¿Ãû³Æ¡¢±£´æÎ»Öã¬ÔÙµã»÷ ¡° ´´½¨ ¡± ¡£

´´½¨Íê±Ï¡£

2£©Éè¼ÆÍ¼ÐνçÃæ

°Ú·Å¿Ø¼þ£º

Ê×ÏÈÍùͼÐνçÃæÄÚÍ϶¯¿Ø¼þ²¢½øÐаڷţ¬ÈçÏÂͼËùʾ¡£

´Ó¹¤¾ßÏäÄÚÍÏ 2 ¸ö TextBox ºÍ 1 ¸ö Button ¿Ø¼þ¡£

×¢£º¸ÕÍϳöÀ´µÄ TextBox Ö»ÄÜÊäÈëÒ»ÐУ¬Ö»Äܺá×ÅÍÏ£¬²»ÄÜÊú×ÅÍÏ£¬²»Óõ£ÐÄ£¬¿´¿´ÏÂÃæµÄÉèÖÃÊôÐÔ£¬¾Í¿ÉÒÔÉè¼Æ³öÈçϵĽçÃæÁË¡£

ÉèÖÃÏûÏ¢ÊäÈë¿òÊôÐÔ£º

×ó¼üÑ¡ÖÐ×îÏÂÃæµÄ TextBox £¬²¢ÔÚÓÒϽǵÄÊôÐÔÖÐÕÒµ½ Font ÊôÐÔ£¬²¢µã»÷ ¡° ¡­ ¡± ¡£

¸Ã½çÃæÄÚ¿ÉÒÔÉèÖÃÎı¾Ñùʽ¡£

È»ºóÔÚÉè¼ÆÊôÐÔÖеÄ(Name)ÕâÀïĬÈ쵀 textBox1 £¬Ò²¿ÉÒÔ¸ü¸Ä£¬µ«²»ÄÜÖØ¸´£¬Î¨Ò»±êʶ£¬ÕâÊǿؼþµÄ±àºÅ£¬ÓÃÓÚ´úÂë±àдµÄʱºòʶ±ð£¬¾ÍÏñÊÇÉí·ÝÖ¤ºÅÒ»Ñù£¬²»ÄܳöÏÖÖÐÎÄ¡£

ÔÚ²¼¾ÖÕâÀLocation ÊÇÖ¸¿Ø¼þ×óÉϽǶ¥µã»ùÓÚ´°¿ÚËùÔÚµÄλÖã¬Size ÊÇÖ¸¿Ø¼þµÄ³¤ºÍ¿í£¬¿ÉÒÔ×ÔÐÐÉèÖá£

ÉèÖÃÏûÏ¢ÏÔʾ½çÃæÊôÐÔ£º

Ñ¡ÖÐÒ»¸ö TextBox £¬²¢µã»÷ºÚÉ«µÄСÈý½Ç°´Å¥£¬¿ÉÒÔ½«µ¥ÐÐÎı¾¿òÉèÖÃΪ¶àÐÐÎı¾¿ò¡£

Ìí¼Ó´¹Ö±¹ö¶¯Ìõ£ºÕÒµ½ ScrollBars ÊôÐÔ£¬ÉèÖòÎÊýΪ Vertical ¡£

ÉèÖñ߽çÑùʽ£ºÕÒµ½ BorderStyle £¬²ÎÊýÉèÖÃΪ FixedSingle ¡£

±àºÅΪ textBox2 ¡£

ÉèÖÃÏûÏ¢ÏÔʾ½çÃæµÄ TextBox ²»¿É±à¼­£ºÕÒµ½ Enabled ÊôÐÔ£¬²ÎÊýÉèΪ False ¡£

³ý´ËÖ®Í⣬Ä㻹¿ÉÒÔ¸ù¾ÝÉèÖÃÏûÏ¢ÊäÈë¿òµÄÎı¾ÑùʽÀ´ÉèÖÃÏûÏ¢ÏÔʾ½çÃæÄÚµÄÎı¾Ñùʽ¡£

ÉèÖ÷¢ËÍÏûÏ¢°´Å¥ÊôÐÔ£º

×ó¼üµã»÷Ñ¡Öа´Å¥£¬ÕÒµ½ Text ÊôÐÔ£¬²ÎÊýÊäÈëΪ ¡° ·¢ËÍ ¡± £¬Ôò¿Ø¼þÉϾͻáÏÔʾÊäÈëµÄ×ÖÑù¡£

ËüµÄΨһ±êʶΪ£ºbutton1

ÉèÖô°ÌåÊôÐÔ£º

×ó»÷´°ÌåÑ¡ÖÐËü£¬ÔÚÓÒϽǵÄÊôÐÔÖÐÕÒµ½ Text ÊôÐÔ£¬±à¼­Îª ¡° ¿Í»§¶Ë ¡± £¬È»ºó´°ÌåµÄ×óÉϽǣ¬¾ÍÏÔʾΪ ¡° ¿Í»§¶Ë ¡±¡£

½ô½Ó×Å£¬Óиö AcceptButton ÊôÐÔ£¬ÏÂÀ­¿òÑ¡ÖÐÕâ¸ö button1 °´Å¥£¬ÉèÖÃÍêÕâ¸öÊôÐԺ󣬵±ÎÒÃÇ×îºóÖ´ÐÐÕâ¸ö³ÌÐòºó£¬°´Ï»سµ¼ü = µã»÷Õâ¸ö°´Å¥¡£

ÖÁ´Ë£¬¿Ø¼þµÄһЩ¼òµ¥ÊôÐÔ¾ÍÉèÖÃÍê±ÏÁË¡£

ÏëÁË½â¿Ø¼þµÄÆäËüÊôÐÔ¿ÉÒԲο¼£ºhttps://wenwen.sogou.com/z/q707115213.htm

ÄãÒ²¿ÉÒÔÉèÖøü¶àµÄÊôÐÔ£¬Ê¹½çÃæ¸ü¼ÓµÄºÃ¿´£¬ÕâÀï¾Í²»ÔÙ׸Êö£¬×ÅÖØµãÔÚÓÚ´úÂë¡£

3£©±àд´úÂë

ÏÖÔÚÀ´¿ªÊ¼±àд´úÂë¡£

Ë«»÷ͼÐνçÃæµÄ°´Å¥ºó£¬VS2019 »á×Ô¶¯µÄתµ½´úÂë±à¼­ÇøÓò¡£

ºìÉ«·½¿òºó¾ÍÊÇÎÒÃÇË«»÷°´Å¥ºó£¬Òª±àд´¥·¢Ê¼þÖ´Ðйý³ÌµÄ´úÂ룬Ҳ¾ÍÊǵã»÷°´Å¥ºó£¬¾Í»áÖ´ÐÐÕâ¸öº¯ÊýÌå¡£

ÔÚ button1_Click º¯ÊýÄÚ¸´ÖÆÕ³ÌùÈçÏ´úÂë¡£

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void button1_Click(object sender, EventArgs e)
{
try
{

string str = "The current time: ";
str += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
textBox2.AppendText(str + Environment.NewLine);

int port = 2000;
string host = "10.60.202.32";//ÎÒÊÒÓѵÄIPµØÖ·
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//°ÑipºÍ¶Ë¿Úת»¯ÎªIPEndPointʵÀý
Socket c = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//´´½¨Ò»¸öSocket

str = "Connect to server...";
textBox2.AppendText(str + Environment.NewLine);
c.Connect(ipe);//Á¬½Óµ½·þÎñÆ÷

string sendStr = textBox1.Text;
str = "The message content: " + sendStr;
textBox2.AppendText(str + Environment.NewLine);
byte[] bs = Encoding.UTF8.GetBytes(sendStr);
str = "Send the message to the server...";
textBox2.AppendText(str + Environment.NewLine);
c.Send(bs, bs.Length, 0);//·¢ËÍÐÅÏ¢

string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//´Ó·þÎñÆ÷¶Ë½ÓÊÜ·µ»ØÐÅÏ¢
recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);
str = "The server feedback: " + recvStr;//ÏÔʾ·þÎñÆ÷·µ»ØÐÅÏ¢
textBox2.AppendText(str + Environment.NewLine);

c.Close();
}
catch (ArgumentNullException f)
{
string str = "ArgumentNullException: " + f.ToString();
textBox2.AppendText(str + Environment.NewLine);
}
catch (SocketException f)
{
string str = "ArgumentNullException: " + f.ToString();
textBox2.AppendText(str + Environment.NewLine);
}
textBox2.AppendText("" + Environment.NewLine);
textBox1.Text = "";
}
}
}

´úÂëÁ÷³Ì£º

µ±µã»÷°´Å¥ºó£¬button1_Click º¯Êý¿ªÊ¼Ö´ÐС£

¢Ù»ñÈ¡µ±Ç°Ê±¼ä£¬²¢´òÓ¡µ½ÏûÏ¢ÏÔʾ½çÃæÄÚ£»

¢Ú×öÁ¬½Ó·þÎñÆ÷¶ËµÄ×¼±¸£¬È磺ÉèÖÃIP¡¢ÉèÖö˿ںš¢ÊµÀýsocket¶Ë¿Ú£»

¢Û´òÓ¡Á¬½ÓÐÅÏ¢£¬²¢Á¬½Ó·þÎñÆ÷£»

¢Ü´ÓÏûÏ¢ÊäÈë¿ò»ñÈ¡×Ö·û´®²¢°´ÕÕUTF8±àÂëµ½×Ö½ÚÊý×é´æ´¢£¬È»ºó·¢ËͳöÈ¥¡£

¢Ý½«´Ó·þÎñÆ÷¶Ë½ÓÊÕµ½µÄ×Ö½ÚÁ÷°´ÕÕUTF8½âÂëΪ×Ö·û´®²¢´æ´¢´òÓ¡³öÀ´¡£

¢Þ¹Ø±Õsocket¶Ë¿Ú±äÁ¿¡£

Á½¸ö catch ÊÇ×öÒì³£Çé¿ö´¦Àí£¬²¢´òÓ¡µ½ÏûÏ¢ÏÔʾ½çÃæÄÚ¡£

½ÓÏÂÀ´¿ªÊ¼±àд·þÎñÆ÷¶Ë´úÂ룺

×¢£º´ÓµÚÈý²¿·Ö£º ¡° Form´°¿Ú³ÌÐòʹÓà TCP ͨÐÅ ¡± ¿ªÊ¼ÖÁ´Ë£¬¶¼ÊÇÔÚ±àд¿Í»§¶ËµÄ²¿·Ö£¬½ÓÏÂÀ´ÎÒÃÇÐèÒª±àд·þÎñÆ÷¶ËµÄ´úÂëÁË¡£

¸ù¾ÝµÚ¶þ²¿·Ö£º ¡° ¿ØÖÆÌ¨³ÌÐòʹÓà UDP ͨÐÅ ¡± ´´½¨Ò»¸öеĿØÖÆÌ¨³ÌÐò£¬ÕâÀï¾Í²»ÔÙÑÝʾÁË¡£

¸´ÖÆÏÂÃæ main º¯ÊýÄڵĴúÂ룬²¢Õ³Ìù½øÄã×Ô¼ºµÄ main º¯ÊýÌåÄÚ¡£

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{

int i = 0;
int port = 2000;
string host = "10.60.202.32";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//´´½¨Ò»¸öSocketÀà
s.Bind(ipe);//°ó¶¨2000¶Ë¿Ú

while (true)
{
i++;
try
{
Console.Write("Perform operations {0} :",i);
Console.WriteLine("\t--------");
s.Listen(0);//¿ªÊ¼¼àÌý
Console.WriteLine("1. Wait for connect...");

Socket temp = s.Accept();//Ϊн¨Á¬½Ó´´½¨ÐµÄSocket¡£
Console.WriteLine("2. Get a connect");

string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//´Ó¿Í»§¶Ë½ÓÊÜÐÅÏ¢
recvStr += Encoding.UTF8.GetString(recvBytes, 0, bytes);
Console.WriteLine("3. Server Get Message:{0}", recvStr);//°Ñ¿Í»§¶Ë´«À´µÄÐÅÏ¢ÏÔʾ³öÀ´

string sendStr = "Ok!Client send message sucessful!";
byte[] bs = Encoding.UTF8.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//·µ»Ø¿Í»§¶Ë³É¹¦ÐÅÏ¢

temp.Close();
Console.WriteLine("4. Completed...");
Console.WriteLine("----");
Console.WriteLine("");
//s.Close();//¹Ø±Õsocket£¨ÓÉÓÚÔÙËÀÑ­»·ÖУ¬ËùÒÔ²»ÓÃд£¬µ«Èç¹ûÊǵ¥¸ö½ÓÊÕ£¬ÊµÀýsocket²¢Íê³ÉÈÎÎñºóÐè¹Ø±Õ£©
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
}
}
}
}

4£©±àÒë¿Í»§¶ËºÍ·þÎñÆ÷¶Ë

¿Í»§¶Ë£º

·þÎñÆ÷¶Ë£º

GIF¶¯»­ÏÔʾ£º

È»ºóÔÚ¿Í»§¶ËÄÚÊäÈëÐÅÏ¢£¬²¢µã»÷ ¡° ·¢ËÍ ¡± °´Å¥»òÕß°´»Ø³µ¼ü·¢ËÍÏûÏ¢£¬·þÎñÆ÷¶ËÏÔʾ¿Í»§¶Ë·¢À´µÄÏûÏ¢£¬²¢×ö»Ø¸´£¨ÓÉÓÚʹÓÃµÄ GIF ÖÆ×÷¶¯Ì¬Í¼£¬ÏÔʾ²»Í¬²½£¬×Ô¼ºÊÔÑé½á¹ûµÄʱºò¿ÉÒÔ¶ÔÕÕÀ´¿´£©£¬È»ºó·þÎñÆ÷¶Ë´¦ÀíÍêÏûÏ¢ºó£¬½øÈëµÚÒ»¸ö×¼±¸½ÓÊս׶Ρ£

¿Í»§¶Ë£º

·þÎñÆ÷¶Ë£º

·¢ËͶà¸öÏûÏ¢ºóµÄ½á¹û£º

¿Í»§¶Ë£º

·þÎñÆ÷¶Ë£º

5£©×¥°ü·ÖÎöÊý¾Ý

°´ÕÕµÚ¶þ²¿·ÖµÄ×¥°ü²½ÖèÀ´£¬¿ªÊ¼×¥°ü¡£

ÏÂÃæÕ⼸¸ö°ü¾ÍÊÇÎÒ·¢Ë͸øÎÒÊÒÓѵçÄÔÉϵÄÐÅÏ¢ÁË¡£

ÒÔ¼°ÊÒÓѵçÄԵĿͻ§¶Ë·´À¡¸øÎÒµÄÐÅÏ¢¡£

ÔÙÀ´¿´Ò»Ï UDP °üºÍ TCP °üµÄÇø±ð¡£

UDP£º

µÚÈýÐУºInternet Protocl Version 4£ºIPv4ЭÒé

µÚËÄÐУºUser Datagram Protocol£ºUDPЭÒé

TCP£º

µÚÈýÐУºInternet Protocl Version 4£ºIPv4ЭÒé

µÚËÄÐУºTransmission Control Protocol£ºTCPЭÒé

ËüÃǵÄÇø±ðÒ²¾ÍÔÚÓÚµÚËÄÐУ¬µÚÈýÐж¼ÊÇ IPv4 ЭÒé¡£

Õâ¸ö ip °üÍ·Ò²ÊÇ 45 00 ¿ªÍ·£¬¶Ô±Èһϵڶþ²¿·Ö¶Ô ip °üµÄ·ÖÎö£¬Õâ¸ö ip °üÍ·Ò²ÊÇ 45 00 ¿ªÍ·£¬ËùÒÔÒ»¸ö ip °üµÄǰÁ½¸ö×Ö½ÚÒ»¶¨ÊÇ 45 00 ¡£

Éú´æÆÚÒ²ÊÇ 128 £¬Ò»¸ö°üµÄÉú´æÆÚ»ù±¾É϶¼ÊÇĬÈϵÄÊýÖµ 128 £¬¶øÕâÀïµÄЭÒéºÅÊÇ 6 £¬Õâ¾ÍÊÇ TCP µÄЭÒéºÅ£¬µÚ¶þ²¿·ÖµÄЭÒéºÅÊÇ 17 £¬ÊÇ UDP µÄ¡£

ÆäÓàµÄÊý¾ÝºÍµÚ¶þ²¿·ÖץȡµÄÊý¾Ý°ü²î²»¶àÁË£¬ÕâÀï²»ÔÙ׸ÊöÁË¡£

ÖÁ´Ë±¾ÎÄÕ¾Ͳ¶à½áÊøÁË¡£

ËÄ¡¢×ܽá

ͨ¹ý±¾ÆªÎÄÕ£¬Ñ§»áÁËÈçºÎʹÓà UDP/TCP Ì×½Ó×Ö½øÐÐÍøÂçͨÐÅ£¬Õâ¶¼ÊÇ»ùÓÚ C/S ģʽ£¬Ò»¸ö¿Í»§¶Ë£¬Ò»¸ö·þÎñÆ÷¶Ë£¬ÔÚʹÓÃÌ×½Ó×ÖµÄʱºò£¬¶Ë¿ÚºÅ¡¢IPµØÖ·ÊDZز»¿ÉȱµÄ£¬È±Ò»²»¿É£¬Èç¹ûÄã¾õµÃ±¾ÆªÎÄÕ»¹¿ÉÒԵϰ£¬Ð»Ð»µã¸öÔÞ¡£

Îå¡¢²Î¿¼×ÊÁÏ

1¡¢C#Ì×½Ó×Ö±à³ÌʵÀýUDP/TCPͨÐÅ

2¡¢ÍøÂç±à³ÌÖ®UDPÌ×½Ó×Ö

3¡¢c# ʵÏÖ¼òµ¥udpÊý¾ÝµÄ·¢ËͺͽÓÊÕ

4¡¢IP±¨Í·½á¹¹

   
3164 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

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

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

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
.NET Core 3.0 Õýʽ¹«²¼£ºÐÂÌØÐÔÏêϸ½â¶Á
.NET Core²¿ÊðÖÐÄã²»Á˽âµÄ¿ò¼ÜÒÀÀµÓë¶ÀÁ¢²¿Êð
C# eventḬ̈߳²È«
¼òÎö .NET Core ¹¹³ÉÌåϵ
C#¼¼ÊõÂþ̸֮À¬»ø»ØÊÕ»úÖÆ(GC)
×îпγÌ
.NetÓ¦Óÿª·¢
C#¸ß¼¶¿ª·¢¼¼Êõ
.NET ¼Ü¹¹Éè¼ÆÓëµ÷ÊÔÓÅ»¯
ASP.NET Core Web ¿ª·¢
ASP.Net MVC¿ò¼ÜÔ­ÀíÓëÓ¦Óÿª·¢
³É¹¦°¸Àý
º½Ìì¿Æ¹¤¼¯ÍÅ×Ó¹«Ë¾ DotNetÆóÒµ¼¶Ó¦ÓÃÉè¼ÆÓ뿪·¢
ÈÕÕÕ¸Û¼¯ .NET Framewor
Éñ»ªÐÅ .NETµ¥Ôª²âÊÔ
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ