±à¼ÍƼö: |
±¾ÎÄÉæ¼°¼¸¸öÄÚÈÝ
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±¨Í·½á¹¹ |