using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
public class StateObject
{
public Socket workSocket = null;
public const int BufferSize = 1024;
public byte[] buffer = new byte[BufferSize];
public StringBuilder sb = new StringBuilder();
}
public class AsynchronousSocketListener
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public static void StartListening()
{
byte[] bytes = new Byte[1024];
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
listener.Bind(localEndPoint);
listener.Listen(100);
while (true)
{
allDone.Reset(); //“重新”阻断调用者执行
Console.WriteLine("Waiting for a connection.......");
listener.BeginAccept(new AsyncCallback(AcceptCallback), listener);
allDone.WaitOne();
}
}
catch
{}
}
public static void AcceptCallback(IAsyncResult ar)
{
//allDone.Set();
Socket listener = (Socket)ar.AsyncState;//装拆箱
Socket handler = listener.EndAccept(ar);//处理连接尝试//返回一个 System.Net.Sockets.Socket,它处理与远程主机的通信。
StateObject state = new StateObject();
state.workSocket = handler;
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state);
}
public static void ReadCallback(IAsyncResult ar)
{
String content
//server 端代码using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading; public class StateObject{ public Socket workSocket = null; public const i