110,535
社区成员
发帖
与我相关
我的任务
分享
public class StateObject
{
public Socket workSocket = null;
public const int BufferSize = 8192;
public byte[] buffer = new byte[BufferSize];
public StringBuilder sb = new StringBuilder();
}
listener.BeginAccept(AcceptCallBack, listener);
void AcceptCallBack(IAsyncResult iar)
{
Socket handler = (Socket)iar.AsyncState;
Socket socketConn = handler.EndAccept(iar);
ThreadPool.QueueUserWorkItem(new WaitCallback(Receive), socketConn);
listener.BeginAccept(AcceptCallBack, listener);
}
public void Receive(Object obj)
{
Socket server = (Socket)obj;
StateObject state = new StateObject();
state.workSocket = server;
server.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, ReceiveCallback, state);
}
void ReceiveCallback(IAsyncResult ar)
{
string strMsg = null;
string strRecv = string.Empty;
StateObject state = (StateObject)ar.AsyncState;
Socket handler = state.workSocket;
int bytesRead = handler.EndReceive(ar);
state.sb.Clear();
if (bytesRead > 0)
{
state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));
strRecv = state.sb.ToString();
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, ReceiveCallback, state);
}
}