首先谢谢各位,在以下例子中,
怎样理解“Socket listener = (Socket)ar.AsyncState”,将对象转换成接口吗?
我们知道ocket 是一个实现了伯克利的套接字接口,而AsyncState为IAsyncResult的一个属性,是object类型,很奇怪哦~
public void OnConnectRequest(IAsyncResult ar)
{
// 获取客户请求的socket
Socket listener = (Socket)ar.AsyncState;
//返回新的socket对象,用来向远程主机发送数据和从远程主机接收数据
Socket sConn = listener.EndAccept(ar);
NewConnection(sConn); //远程终端的网络地址和端口号
string s = sConn.RemoteEndPoint.ToString();
AddClientToListBox(s);
listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener);
}
怎样理解“Socket listener = (Socket)ar.AsyncState”,将对象转换成接口吗?
我们知道ocket 是一个实现了伯克利的套接字接口,而AsyncState为IAsyncResult的一个属性,是object类型,很奇怪哦~
public void OnConnectRequest(IAsyncResult ar)
{
// 获取客户请求的socket
Socket listener = (Socket)ar.AsyncState;
//返回新的socket对象,用来向远程主机发送数据和从远程主机接收数据
Socket sConn = listener.EndAccept(ar);
NewConnection(sConn); //远程终端的网络地址和端口号
string s = sConn.RemoteEndPoint.ToString();
AddClientToListBox(s);
listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener);
}
AsyncState(Object类型)是IAsyncResult接口的一个属性。
而Socket属于一个不同的接口,两个接口可以这样操作,如何实现的呢?
Socket listener = (Socket)ar.AsyncState