±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË´´½¨½â¾ö·½°¸¡¢´´½¨·þÎñ¶Ë³ÌÐò¡¢½ÓÊÜ´«ÈëµÄÇëÇó¡¢´´½¨¿Í»§¶Ë¡¢ÔÚ¿Í»§¶ËÖÐʵÏÖ½ÓÊÜÏûÏ¢µÄ·½·¨µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹û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);
}
}
}
}
|
×îºóµ÷ÊÔÆðÀ´¿´µ½µÄЧ¹ûÈçÏÂͼ

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