111,129
社区成员
发帖
与我相关
我的任务
分享
public bool StartListening(string strIP, int nPort)
{
IPAddress _ipAddress = IPAddress.Parse(strIP);
IPEndPoint ip = new IPEndPoint(_ipAddress, nPort);
try
{
sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sListener.Bind(ip);
sListener.Listen(nPort);
// 回调函数,当有连接时进入AcceptEnd函数执行
AsyncCallback asyncCallback = new AsyncCallback(AcceptEnd);
sListener.BeginAccept(asyncCallback, sListener);
return true;
}
catch
{
return false;
}
}
public void AcceptEnd(IAsyncResult pIAsyncResult)
{
// 接受连接,并放入哈希表htSessions
Socket socket = sListener.EndAccept(pIAsyncResult);
ClientSocket session = new ClientSocket(socket);
htSessions.Add(session.nID, session);
// 开始接收客户端数据
session.socketClient.BeginReceive(byRecvBuf, 0, byRecvBuf.Length, SocketFlags.None, new AsyncCallback(ReceiveData), session.socketClient);
// 重新开始准备接受连接
AsyncCallback asyncCallback = new AsyncCallback(AcceptEnd);
sListener.BeginAccept(asyncCallback, sListener);
}