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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
C#¸ß¼¶±à³Ì¼¼Êõ¸´Ï°
 
×÷Õߣº ×îÃÀµÄ·ç¾°×ÜÔÚÔ¶·½
  2669  次浏览      27
 2020-12-24  
 
±à¼­ÍƼö:

±¾ÎÄÖ÷Òª½éÉÜÁË´´½¨½â¾ö·½°¸¡¢´´½¨·þÎñ¶Ë³ÌÐò¡¢½ÓÊÜ´«ÈëµÄÇëÇó¡¢´´½¨¿Í»§¶Ë¡¢ÔÚ¿Í»§¶ËÖÐʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûAnna±à¼­ÍƼö

´Ó»ù±¾µÄSocket±à³Ì½øÈë

£¨×¢Ò⣺ÕâÊÇתµÄһƪ2011ÄêµÄÎÄÕ£¬ÓÐЩ֪ʶ¿ÉÄܸøüÐÂÁË£¡£©

ÕâһƪÎÄÕ£¬ÎÒ½«Í¼ÎIJ¢Ã¯µØ½éÉÜSocket±à³ÌµÄ»ù´¡ÖªÊ¶£¬ÎÒÏàÐÅ£¬Èç¹ûÄã°´ÕÕ²½Öè×öÍêʵÑ飬һ¶¨¿ÉÒÔ¶ÔSocket±à³ÌÓиüºÃµØÀí½â¡£

µÚÒ»²½£º´´½¨½â¾ö·½°¸

µÚ¶þ²½£º´´½¨·þÎñ¶Ë³ÌÐò

ÕâÀï¿ÉÒÔÑ¡Ôñ¡°Console Application¡±Õâ¸öÀàÐÍ£¬±È½Ï·½±ãµ÷ÊÔ

È»ºó±àдÈçÏ´úÂ룬ʵÏÖ·þÎñÆ÷µÄ»ù±¾¹¦ÄÜ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);

Console.WriteLine("Server is ready!");
Console.Read();
}
}
}

ÏÖÔÚ¿ÉÒÔÆô¶¯µ÷ÊÔһϿ´¿´Ð§¹ûÈçºÎ£¬Õý³£Çé¿öÏÂÓ¦¸Ã»á¿´µ½Ò»¸öÌáʾ£¬ÒòΪÎÒÃÇÐèÒªÔÚTCP 4530¶Ë¿Ú½øÐмàÌý£¬ËùÒÔ·À»ðǽ»áÓÐÌáʾ¡£

µã»÷¡°Allow access¡±

ÕâÑù£¬ÎÒÃǵķþÎñÆ÷¾Í¿ÉÒÔ¿ªÊ¼¼àÌýÁË¡£µ«ÊÇÕâÓÐʲôÓÃÄØ£¿Êǵģ¬Ã»ÓÐʲôÓá£

ÎÒÃÇ»¹ÐèҪΪ·þÎñÆ÷Ìí¼ÓһЩ¹¦ÄÜ£¬ÀýÈç½ÓÊÜ´«ÈëµÄÇëÇ󣬸ø¿Í»§¶Ë·¢ËÍÏûÏ¢£¬»òÕß´Ó¿Í»§¶Ë½ÓÊÕÏûÏ¢µÈµÈ

µÚÈý²½£º½ÓÊÜ´«ÈëµÄÇëÇó

ÎÒÃÇÐèҪͨ¹ýAccept£¬»òÕß(BeginAccept)À´½ÓÊÜ´«ÈëµÄÇëÇó£¬Çë×¢ÒâÏÂÃæ´úÂëÖеĺìÉ«²¿·Ö

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);
//¿ªÊ¼½ÓÊܿͻ§¶ËÁ¬½ÓÇëÇó
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept.aspx
socket.BeginAccept(new AsyncCallback((ar) =>
{
//Õâ¾ÍÊǿͻ§¶ËµÄSocketʵÀý£¬ÎÒÃǺóÐø¿ÉÒÔ½«Æä±£´æÆðÀ´
var client = socket.EndAccept(ar);
//¸ø¿Í»§¶Ë·¢ËÍÒ»¸ö»¶Ó­ÏûÏ¢
client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at "+DateTime.Now.ToString()));
}), null);

Console.WriteLine("Server is ready!");
Console.Read();
}
}
}

wow£¬¿´ÆðÀ´²»´í¶Ô°É£¬ÎÒÃǸϽô×öÒ»¸ö¿Í»§¶ËÀ´²âÊÔһϰÉ

µÚËIJ½£º´´½¨¿Í»§¶Ë

ÎÒÃÇ»¹ÊÇʹÓÃÒ»¸öConsole Application

Ìí¼ÓÈçϵĴúÂ룬²¢ÇÒ´´½¨¿Í»§¶ËÁ¬½Ó

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//µ¼ÈëµÄÃüÃû¿Õ¼ä
using System.Net.Sockets;
namespace SocketClient
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öSocket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Á¬½Óµ½Ö¸¶¨·þÎñÆ÷µÄÖ¸¶¨¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.connect.aspx
socket.Connect("localhost", 4530);

Console.WriteLine("connect to the server");
Console.Read();
}
}
}
 

ÒÀ´ÎÑ¡ÔñSocketServerºÍSocketClientÕâÁ½¸öÏîÄ¿£¬·Ö±ð½«ÆäÆô¶¯Îªµ÷ÊÔ״̬£¨ÓÒ¼ü²Ëµ¥£¬Debug=>Start new instance)

ÎÒÃÇ¿´µ½Á½¸ö³ÌÐò¶¼¹¤×÷Õý³£¡£

µ«ÊÇ£¬ÔÚ¿Í»§¶ËÔõôûÓÐÊÕµ½·þÎñÆ÷·¢¹ýÀ´µÄÏûÏ¢ÄØ£¿ÄÇÊÇÒòΪ£¬ÎÒÃÇûÓÐÔÚ¿Í»§¶ËÌṩÕâ·½ÃæµÄ¹¦ÄÜ¡£

µÚÎå²½£ºÔÚ¿Í»§¶ËÖÐʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//µ¼ÈëµÄÃüÃû¿Õ¼ä
using System.Net.Sockets;
namespace SocketClient
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öSocket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Á¬½Óµ½Ö¸¶¨·þÎñÆ÷µÄÖ¸¶¨¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.connect.aspx
socket.Connect("localhost", 4530);
//ʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨
var buffer = new byte[1024];//ÉèÖÃÒ»¸ö»º³åÇø£¬ÓÃÀ´±£´æÊý¾Ý
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginreceive.aspx
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback((ar) =>
{
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.endreceive.aspx
var length = socket.EndReceive(ar);
//¶ÁÈ¡³öÀ´ÏûÏ¢ÄÚÈÝ
var message = Encoding.Unicode.GetString(buffer, 0, length);
//ÏÔʾÏûÏ¢
Console.WriteLine(message);
}), null);
Console.WriteLine("connect to the server");
Console.Read();
}
}
}
 

Çë×¢ÒâÒÔÉϺìÉ«µÄ²¿·Ö£¬ÎÒÃÇÓÃÁËBeginReceive·½·¨½øÐÐÒì²½µÄÏûÏ¢ÕìÌý£¬Èç¹ûÊÕµ½ÁË£¬ÎÒÃǾʹòÓ¡³öÀ´

¿´ÆðÀ´ÒѾ­ÊµÏÖÁËÎÒÃÇÐèÇóÁË£º·þÎñÆ÷¸ø¿Í»§¶Ë·¢ÁËÒ»¸öÏûÏ¢£¬¶ø¿Í»§¶ËÒ²ÒѾ­ÊÕµ½ÁË¡£

µ«ÊÇ£¬ÕâÔ¶Ô¶²»¹»£¬ÒòΪËüÃÇÖ®¼äµÄͨѶ²»½ö½öÊÇÒ»´ÎÐԵģ¬ÄÇôÈç¹û·þÎñÆ÷Òª²»¶ÏµØ¸ø¿Í»§¶Ë·¢ÏûÏ¢£¬ÀýÈçÿ¸ôÁ½ÃëÖӾͷ¢ËÍÒ»¸öÏûÏ¢£¬ÈçºÎʵÏÖÄØ£¿

µÚÁù²½£ºÊµÏÖ·þÎñÆ÷¶¨ÆÚÏò¿Í»§¶Ë·¢ÏûÏ¢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);
//¿ªÊ¼½ÓÊܿͻ§¶ËÁ¬½ÓÇëÇó
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept.aspx
socket.BeginAccept(new AsyncCallback((ar) =>
{
//Õâ¾ÍÊǿͻ§¶ËµÄSocketʵÀý£¬ÎÒÃǺóÐø¿ÉÒÔ½«Æä±£´æÆðÀ´
var client = socket.EndAccept(ar);
//¸ø¿Í»§¶Ë·¢ËÍÒ»¸ö»¶Ó­ÏûÏ¢
client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at "+DateTime.Now.ToString()));

//ʵÏÖÿ¸ôÁ½ÃëÖÓ¸ø·þÎñÆ÷·¢Ò»¸öÏûÏ¢
//ÕâÀïÎÒÃÇʹÓÃÁËÒ»¸ö¶¨Ê±Æ÷
var timer = new System.Timers.Timer();
timer.Interval = 2000D;
timer.Enabled = true;
timer.Elapsed += (o, a) =>
{
client.Send(Encoding.Unicode.GetBytes("Message from server at " +DateTime.Now.ToString()));
};
timer.Start();
}), null);

Console.WriteLine("Server is ready!");
Console.Read();
}
}
}
 

ÎÒÃÇ»¹ÒªÊµÏÖÔÚ¿Í»§¶ËÒ»Ö±¼àÌýÏûÏ¢µÄ»úÖÆ£¬¶ø²»ÊÇÒ»´ÎÐÔ½ÓÊÕ.Çë×¢ÒâÏÂÃæºìÉ«µÄ²¿·Ö

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//µ¼ÈëµÄÃüÃû¿Õ¼ä
using System.Net.Sockets;
namespace SocketClient
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öSocket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Á¬½Óµ½Ö¸¶¨·þÎñÆ÷µÄÖ¸¶¨¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.connect.aspx
socket.Connect("localhost", 4530);
Console.WriteLine("connect to the server");
//ʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginreceive.aspx
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage),socket);
Console.Read();
}

static byte[] buffer = new byte[1024];
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.endreceive.aspx
var length = socket.EndReceive(ar);
//¶ÁÈ¡³öÀ´ÏûÏ¢ÄÚÈÝ
var message = Encoding.Unicode.GetString(buffer, 0, length);
//ÏÔʾÏûÏ¢
Console.WriteLine(message);
//½ÓÊÕÏÂÒ»¸öÏûÏ¢(ÒòΪÕâÊÇÒ»¸öµÝ¹éµÄµ÷Óã¬ËùÒÔÕâÑù¾Í¿ÉÒÔÒ»Ö±½ÓÊÕÏûÏ¢ÁË£©
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
}
}
}
 

ÖØÐµ÷ÊÔÆðÀ´£¬¿´ÆðÀ´µÄЧ¹ûÈçÏÂͼËùʾ

ÎÒÃǼÌÐø×öÏÂÃæµÄʵÑ飬һ²½Ò»²½µØÑо¿SocketͨѶÖпÉÄÜÓöµ½µÄһЩÎÊÌâ

ÇëÏȹرյô¿Í»§¶ËÕâ¸ö³ÌÐò£¬¶ø²»Òª¹Ø±Õ·þÎñ¶Ë³ÌÐò£¬Õâʱ»á·¢ÏÖÒ»¸ö´íÎó

Õâ¸ö´íÎóºÜÈÝÒ×Àí½â£¬ÒòΪ¿Í»§¶ËÒѾ­¹Ø±Õ£¬Ò²¾ÍÊǿͻ§¶ËÄǸöSocketÒѾ­²»´æÔÚÁË£¬·þÎñÆ÷»¹¼ÌÐøÏòËü·¢ËÍÏûÏ¢µ±È»»á³ö´í¡£ËùÒÔ£¬´Ó¿É¿¿ÐÔ·½ÃæµÄ¿¼ÂÇ£¬ÎÒÃDZØÐëÔÚ·¢ËÍÏûϢ֮ǰ¼ì²âSocketµÄ»î¶¯×´Ì¬

µÚÆß²½£º¼ì²â¿Í»§¶ËµÄ»î¶¯×´Ì¬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);
//¿ªÊ¼½ÓÊܿͻ§¶ËÁ¬½ÓÇëÇó
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept.aspx
socket.BeginAccept(new AsyncCallback((ar) =>
{
//Õâ¾ÍÊǿͻ§¶ËµÄSocketʵÀý£¬ÎÒÃǺóÐø¿ÉÒÔ½«Æä±£´æÆðÀ´
var client = socket.EndAccept(ar);
//¸ø¿Í»§¶Ë·¢ËÍÒ»¸ö»¶Ó­ÏûÏ¢
client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at "+DateTime.Now.ToString()));

//ʵÏÖÿ¸ôÁ½ÃëÖÓ¸ø·þÎñÆ÷·¢Ò»¸öÏûÏ¢
//ÕâÀïÎÒÃÇʹÓÃÁËÒ»¸ö¶¨Ê±Æ÷
var timer = new System.Timers.Timer();
timer.Interval = 2000D;
timer.Enabled = true;
timer.Elapsed += (o, a) =>
{
//¼ì²â¿Í»§¶ËSocketµÄ״̬
if(client.Connected)
{
try
{
client.Send(Encoding.Unicode.GetBytes("Message from server at " + DateTime.Now.ToString()));
}
catch(SocketException ex)
{
Console.WriteLine(ex.Message);
}
}
else
{
timer.Stop();
timer.Enabled = false;
Console.WriteLine("Client is disconnected, the timer is stop.");
}
};
timer.Start();
}), null);

Console.WriteLine("Server is ready!");
Console.Read();
}
}
}
 

ÉÏÃæ´úÂëµÄÂß¼­ºÜÇå³þ£¬µ«ÓÐʱºò»¹Êǻᴥ·¢ÄǸöSocketException¡£ÎªÊ²Ã´ÄØ£¿ÕâÊÇÒòΪÎÒÃǵÄTimerÊÇÿ¸ôÁ½ÃëÖÓ¼ì²éÒ»´Î£¬ÄÇô¾ÍºÜ¿ÉÄÜÓÐÒ»ÖÖÇé¿ö£¬ÎÒÃǼì²éµÄʱºò£¬Ëü»¹ÊÇÁ¬½Ó״̬£¬ÏûÏ¢·¢³öÈ¥Ö®ºó£¬Ëü¶Ï¿ªÁË¡£ÕâÖÖÇé¿ö¿Ï¶¨ÊÇ´æÔڵġ£ËùÒÔÒªÓÃTry..catchµÄ½á¹¹

ĿǰÎÒÃÇʵÏֵij¡¾°ºÜ¼òµ¥£¬·þÎñÆ÷Ö»¹Ü·¢ÏûÏ¢£¬¿Í»§¶ËÖ»¹ÜÊÕÏûÏ¢¡£µ«Êµ¼Ê¹¤×÷ÖУ¬¿ÉÄÜÏ£Íû·þÎñÆ÷ºÍ¿Í»§¶Ë¶¼ÄÜÊÕ·¢ÏûÏ¢¡£Çë¿´ÏÂÒ»½Ú

µÚ°Ë²½£ºÊµÏÖË«ÏòÊÕ·¢ÏûÏ¢

ÏÈ¿´·þÎñ¶ËµÄÐÞ¸Ä

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);
//¿ªÊ¼½ÓÊܿͻ§¶ËÁ¬½ÓÇëÇó
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept.aspx
socket.BeginAccept(new AsyncCallback((ar) =>
{
//Õâ¾ÍÊǿͻ§¶ËµÄSocketʵÀý£¬ÎÒÃǺóÐø¿ÉÒÔ½«Æä±£´æÆðÀ´
var client = socket.EndAccept(ar);
//¸ø¿Í»§¶Ë·¢ËÍÒ»¸ö»¶Ó­ÏûÏ¢
client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at "+DateTime.Now.ToString()));

//ʵÏÖÿ¸ôÁ½ÃëÖÓ¸ø·þÎñÆ÷·¢Ò»¸öÏûÏ¢
//ÕâÀïÎÒÃÇʹÓÃÁËÒ»¸ö¶¨Ê±Æ÷
var timer = new System.Timers.Timer();
timer.Interval = 2000D;
timer.Enabled = true;
timer.Elapsed += (o, a) =>
{
//¼ì²â¿Í»§¶ËSocketµÄ״̬
if(client.Connected)
{
try
{
client.Send(Encoding.Unicode.GetBytes("Message from server at " + DateTime.Now.ToString()));
}
catch(SocketException ex)
{
Console.WriteLine(ex.Message);
}
}
else
{
timer.Stop();
timer.Enabled = false;
Console.WriteLine("Client is disconnected, the timer is stop.");
}
};
timer.Start();

//½ÓÊÕ¿Í»§¶ËµÄÏûÏ¢(Õâ¸öºÍÔÚ¿Í»§¶ËʵÏֵķ½Ê½ÊÇÒ»ÑùµÄ£©
client.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveMessage),client);
}), null);

Console.WriteLine("Server is ready!");
Console.Read();
}
static byte[] buffer = new byte[1024];
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.endreceive.aspx
var length = socket.EndReceive(ar);
//¶ÁÈ¡³öÀ´ÏûÏ¢ÄÚÈÝ
var message = Encoding.Unicode.GetString(buffer, 0, length);
//ÏÔʾÏûÏ¢
Console.WriteLine(message);
//½ÓÊÕÏÂÒ»¸öÏûÏ¢(ÒòΪÕâÊÇÒ»¸öµÝ¹éµÄµ÷Óã¬ËùÒÔÕâÑù¾Í¿ÉÒÔÒ»Ö±½ÓÊÕÏûÏ¢ÁË£©
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
}
}
}
 

 

¿ÉÒÔ¿´³öÀ´£¬ÎªÁËÈ÷þÎñÆ÷¿ÉÒÔ½ÓÊÜÏûÏ¢£¬Æäʵ²¢²»ÐèÒªÊ²Ã´ÌØ±ðµÄÉè¼Æ£¬Óë¿Í»§¶Ë½ÓÊÜÏûÏ¢Æäʵ¿ÉÒÔÊÇÒ»ÑùµÄ

ÔÙÀ´¿´¿´¿Í»§¶ËµÄÐÞ¸Ä

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//µ¼ÈëµÄÃüÃû¿Õ¼ä
using System.Net.Sockets;
namespace SocketClient
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öSocket
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Á¬½Óµ½Ö¸¶¨·þÎñÆ÷µÄÖ¸¶¨¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.connect.aspx
socket.Connect("localhost", 4530);
Console.WriteLine("connect to the server");
//ʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginreceive.aspx
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
//½ÓÊÜÓû§ÊäÈ룬½«ÏûÏ¢·¢Ë͸ø·þÎñÆ÷¶Ë
while(true)
{
var message = "Message from client : " + Console.ReadLine();
var outputBuffer = Encoding.Unicode.GetBytes(message);
socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null);
}
}

static byte[] buffer = new byte[1024];
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.endreceive.aspx
var length = socket.EndReceive(ar);
//¶ÁÈ¡³öÀ´ÏûÏ¢ÄÚÈÝ
var message = Encoding.Unicode.GetString(buffer, 0, length);
//ÏÔʾÏûÏ¢
Console.WriteLine(message);
//½ÓÊÕÏÂÒ»¸öÏûÏ¢(ÒòΪÕâÊÇÒ»¸öµÝ¹éµÄµ÷Óã¬ËùÒÔÕâÑù¾Í¿ÉÒÔÒ»Ö±½ÓÊÕÏûÏ¢ÁË£©
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
 

ÎÒÔÚÕâÀï×öÁËÒ»¸öËÀÑ­»·£¬Óû§¿ÉÒÔ²»¶ÏµØÊäÈ룬ÕâЩÏûÏ¢»á±»·¢Ë͸ø·þÎñÆ÷¡£ÈçÏÂͼËùʾ

¡¾±¸×¢¡¿ÒòΪ·þÎñÆ÷ÿ¸ôÁ½ÃëÖӻᷢËÍÐÂÏûÏ¢¹ýÀ´£¬ËùÒÔÔÚÊäÈëµÄʱºò£¬¶¯×÷ÒªÉÔ¿ìÒ»µãÀ²

±¾ÎÄ×îºó̽ÌÖÒ»¸öÎÊÌ⣬¾ÍÊÇÈçºÎÈÃÎÒÃǵķþÎñÆ÷¿ÉÒÔÖ§³Ö¶à¸ö¿Í»§¶Ë

µÚ¾Å²½£ºÖ§³Ö¶à¸ö¿Í»§¶Ë

Õâ¸ö²½ÖèÖ»ÐèÒªÐ޸ķþÎñ¶Ë³ÌÐò¼´¿É

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//¶îÍâµ¼ÈëµÄÁ½¸öÃüÃû¿Õ¼ä
using System.Net.Sockets;
using System.Net;
namespace SocketServer
{
class Program
{
/// <summary>
/// Socket Server ÑÝʾ

/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//´´½¨Ò»¸öеÄSocket,ÕâÀïÎÒÃÇʹÓÃ×î³£ÓõĻùÓÚTCPµÄStream Socket£¨Á÷ʽÌ×½Ó×Ö£©
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//½«¸Ãsocket°ó¶¨µ½Ö÷»úÉÏÃæµÄij¸ö¶Ë¿Ú
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.bind.aspx
socket.Bind(new IPEndPoint(IPAddress.Any, 4530));
//Æô¶¯¼àÌý£¬²¢ÇÒÉèÖÃÒ»¸ö×î´óµÄ¶ÓÁ㤶È
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.listen(v=VS.100).aspx
socket.Listen(4);
//¿ªÊ¼½ÓÊܿͻ§¶ËÁ¬½ÓÇëÇó
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.beginaccept.aspx
socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);

Console.WriteLine("Server is ready!");
Console.Read();
}

public static void ClientAccepted(IAsyncResult ar)
{
var socket = ar.AsyncState as Socket;
//Õâ¾ÍÊǿͻ§¶ËµÄSocketʵÀý£¬ÎÒÃǺóÐø¿ÉÒÔ½«Æä±£´æÆðÀ´
var client = socket.EndAccept(ar);
//¸ø¿Í»§¶Ë·¢ËÍÒ»¸ö»¶Ó­ÏûÏ¢
client.Send(Encoding.Unicode.GetBytes("Hi there, I accept you request at " + DateTime.Now.ToString()));

//ʵÏÖÿ¸ôÁ½ÃëÖÓ¸ø·þÎñÆ÷·¢Ò»¸öÏûÏ¢
//ÕâÀïÎÒÃÇʹÓÃÁËÒ»¸ö¶¨Ê±Æ÷
var timer = new System.Timers.Timer();
timer.Interval = 2000D;
timer.Enabled = true;
timer.Elapsed += (o, a) =>
{
//¼ì²â¿Í»§¶ËSocketµÄ״̬
if(client.Connected)
{
try
{
client.Send(Encoding.Unicode.GetBytes("Message from server at " + DateTime.Now.ToString()));
}
catch(SocketException ex)
{
Console.WriteLine(ex.Message);
}
}
else
{
timer.Stop();
timer.Enabled = false;
Console.WriteLine("Client is disconnected, the timer is stop.");
}
};
timer.Start();

//½ÓÊÕ¿Í»§¶ËµÄÏûÏ¢(Õâ¸öºÍÔÚ¿Í»§¶ËʵÏֵķ½Ê½ÊÇÒ»ÑùµÄ£©
client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), client);
//×¼±¸½ÓÊÜÏÂÒ»¸ö¿Í»§¶ËÇëÇó
socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);
}
static byte[] buffer = new byte[1024];
public static void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
//·½·¨²Î¿¼£ºhttp://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.endreceive.aspx
var length = socket.EndReceive(ar);
//¶ÁÈ¡³öÀ´ÏûÏ¢ÄÚÈÝ
var message = Encoding.Unicode.GetString(buffer, 0, length);
//ÏÔʾÏûÏ¢
Console.WriteLine(message);
//½ÓÊÕÏÂÒ»¸öÏûÏ¢(ÒòΪÕâÊÇÒ»¸öµÝ¹éµÄµ÷Óã¬ËùÒÔÕâÑù¾Í¿ÉÒÔÒ»Ö±½ÓÊÕÏûÏ¢ÁË£©
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
catch(Exception ex){
Console.WriteLine(ex.Message);
}
}
}
}
 

×îºóµ÷ÊÔÆðÀ´¿´µ½µÄЧ¹ûÈçÏÂͼ

±¾ÎÄÔ´´úÂ룬¿ÉÒÔͨ¹ýÕâÀïÏÂÔØ

   
2669 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

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

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹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µ¥Ôª²âÊÔ