扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:冷枫 来源: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。