networkInterface() public method

public networkInterface ( ) : NetworkInterface
return NetworkInterface
Example #1
0
        private static void _onRecv(IAsyncResult ar)
        {
            // Retrieve the socket from the state object.
            PacketReceiver state = (PacketReceiver)ar.AsyncState;

            try
            {
                // 由于多线程问题,networkInterface可能已被丢弃了
                // 例如:在连接loginapp之后自动开始连接到baseapp之前会先关闭并丢弃networkInterface
                if (!state.networkInterface().valid())
                {
                    return;
                }

                Socket client = state.networkInterface().sock();

                // Read data from the remote device.
                int bytesRead = client.EndReceive(ar);

                if (bytesRead > 0)
                {
                    // 更新写位置
                    Interlocked.Add(ref state._wpos, bytesRead);
                    state.startRecv();
                }
                else
                {
                    if (bytesRead == 0)
                    {
                        Dbg.WARNING_MSG(string.Format("PacketReceiver::_processRecved(): disconnect!"));
                        Event.fireIn("_closeNetwork", new object[] { state.networkInterface() });
                        return;
                    }
                    else
                    {
                        state.startRecv();
                    }
                }
            }
            catch (Exception e)
            {
                Dbg.ERROR_MSG(string.Format("PacketReceiver::_processRecved(): is error({0})!", e.ToString()));
                Event.fireIn("_closeNetwork", new object[] { state.networkInterface() });
            }
        }