扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:冷枫 来源:CSDN 2007年9月21日
关键字:
在本页阅读全文(共2页)
void Listen()
{
int nPort = 8000;
IPEndPoint ipLocalEndPoint;
try
{
// IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
ipLocalEndPoint = new IPEndPoint(GetServerIP(), nPort);
}
catch(SocketException socErr )
{
MessageBox.Show(socErr.Message);
return;
}
try
{
ListenSoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp );
ListenSoc.Bind(ipLocalEndPoint);
ListenSoc.Listen(100);
while (true)
{
allDone.Reset();
ListenSoc.Soc.BeginAccept(new AsyncCallback(AcceptCallback),ListenSoc); //异步访问,并定义回调方法
allDone.WaitOne();
}
}
catch(Exception err) 
{
MessageBox.Show(err.Message);
}
}
public void AcceptCallback(IAsyncResult ar) 
{
try
{
allDone.Set();
WSocket listener = (WSocket) ar.AsyncState;
int nSoc = GetAvailbleSocket(); //获取有效的Socket,即一个新的Socket实例
SocClient[nSoc] = (Socket)ListenSoc.EndAccept(ar);
//在这里处理接收过来得数据
}
}
private int GetAvailbleSocket()
{
int i=-1;
for( i=0;i<MAX_SOCKET;i++)
{
try
{
if (SocClient[i]==null)
break;
else
{
if (!SocClient[i].Soc.Connected)
break;
}
}
catch (Exception err) 
{
MessageBox.Show("GetSock :"+err.Message);
}
}
if ((i>-1)&& (i <MAX_SOCKET))
InitSocket(ref SocClient[i],i);
return i;
}Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1793977
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。