namespace Microshaoft { using System; using System.Text; using System.Net; using System.Net.Sockets; using System.ServiceModel.Channels; class EchoServer { Socket server; public EchoServer(IPEndPoint localPoint) { server = new Socket ( localPoint.AddressFamily , SocketType.Stream , ProtocolType.Tcp ); server.Bind(localPoint); server.Listen(5); accept_async(); } private void accept_async() { var accept = new SocketAsyncEventArgs(); accept.Completed += accept_Completed; server.AcceptAsync(accept); } int i = 0; void accept_Completed(object sender, SocketAsyncEventArgs e) { accept_async(); var client = e.AcceptSocket; e.UserToken = i ++; e.Completed -= accept_Completed; e.Completed += receive_Completed; var buffer = new byte[1024]; e.SetBuffer(buffer, 0, buffer.Length); client.ReceiveAsync(e); } void receive_Completed(object sender, SocketAsyncEventArgs e) { var client = sender as Socket; if (e.BytesTransferred == 0) { Console.WriteLine("socket is closed"); client.Close(); } else { //client.Send(e.Buffer, e.BytesTransferred, SocketFlags.None); byte[] buffer = new byte[e.BytesTransferred]; Buffer.BlockCopy(e.Buffer, 0, buffer, 0, buffer.Length); string s = BitConverter.ToString(buffer); //s = Encoding.ASCII.GetString(buffer); Console.WriteLine("===={0}UserToken: [{1}]{0}Bytes Transferred:[{2}]{0}Data:[{3}]{0}====", "\r\n", e.UserToken, e.BytesTransferred, s); //Console.WriteLine(s); client.ReceiveAsync(e); } } } } namespace ConsoleApplication { using System; using System.Net; using Microshaoft; /// <summary> /// Class1 的摘要说明。 /// </summary> public class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> //[STAThread] static void Main(string[] args) { // // TODO: 在此处添加代码以启动应用程序 // IPAddress ipa; IPAddress.TryParse("127.0.0.1", out ipa); EchoServer x = new EchoServer(new IPEndPoint(ipa, 8180)); Console.WriteLine("Hello World"); Console.WriteLine(Environment.Version.ToString()); Console.ReadLine(); } } }