/// <summary> /// Called when a Socket has been established as a result of a /// BeginAcceptSocket call. /// </summary> private void SocketAccepted(IAsyncResult ar) { Socket s = tcpListener.EndAcceptSocket(ar); var internalPayload = (Tuple <StringSocketCallback, object>)ar.AsyncState; StringSocketCallback callback = internalPayload.Item1; StringSocket ss = new StringSocket(s, encoding); object externalPayload = internalPayload.Item2; callback(ss, externalPayload); }
/// <summary> /// Begins listening asynchonously for an incoming socket reqest. When a /// StringSocket is established, invokes the callback with the StringSocket /// and the payload as parameters. /// </summary> public void BeginAcceptStringSocket(StringSocketCallback callback, object payload) { tcpListener.BeginAcceptSocket(SocketAccepted, new Tuple <StringSocketCallback, object>(callback, payload)); }