• Q&A 20090810


    Q:
    端口转接器的问题1:
    网元:ERICSSONOSS 接收数据时发生异常
    System.Net.Sockets.SocketException: 一个封锁操作被对 WSACancelBlockingCall 的调用中断。
       在 System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
       在 System.Net.Sockets.Socket.Send(Byte[] buffer)
       在 Ultr.ActiveMonitor.SocketConvernationLib.NeVirtualPortTelnetSession.EndReceiveNeSocket(IAsyncResult ir)

    有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
    端口转接器的问题2:
    System.ObjectDisposedException: 无法访问已释放的对象。
    对象名:“System.Net.Sockets.Socket”。
       在 System.Net.Sockets.Socket.Shutdown(SocketShutdown how)
       在 Ultr.ActiveMonitor.SocketConvernationLib.NeVirtualPortListener.SocketSession_Received(Object sender, DataReceivedEventArgs e)
    A:
    这个其实是在建立连接以后, 没有测试连接就直接使用, 有时候底层socket并没有完全准备好, 就会报告这个这个异常
    .net的apidemo里面是这么写的

    // .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint);
    
    // This is how you can determine whether a socket is still connected.
    bool blockingState = client.Blocking;
    try
    {
        byte [] tmp = new byte[1];
    
        client.Blocking = false;
        client.Send(tmp, 0, 0);
        Console.WriteLine("Connected!");
    }
    catch (SocketException e) 
    {
        // 10035 == WSAEWOULDBLOCK
        if (e.NativeErrorCode.Equals(10035))
            Console.WriteLine("Still Connected, but the Send would block");
        else
        {
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
        }
    }
    finally
    {
        client.Blocking = blockingState;
    }


    Q:
    如果在一个主线程内起了一个工作线程去连接网元, 在连接建立起来以后, 主线程调用工作线程的abort方法强制结束工作线程, 工作线程内部的Socket句柄会不会释放, 非托管会不会被释放(文件句柄, IO句柄,数据库连接)?
    A:
    不会,因为这些资源的句柄是存储在进程的句柄表的,所以在进程结束以前, 这些资源很难被释放掉(.net的自动回收机制理论上可以回收掉, 但是仅仅存在在理论上, 实际写服务器端代码的时候, 是无法依赖.net的自动回收的, 因为.net的自动回收的时机是不确定的, 很有可能在资源耗尽以后再开始进行回收 ,但是那个时候, 系统已经开始停止服务了, 这种情况是不允许出现的)

    Q:
    一个对象的事件有注册的事件响应函数,那么这个对象不再有用以后, 如果注册的事件响应函数没有取消注册,那么这个对象是不是可以被回收释放。
    A:
    不会,这个是由于事件本质上是使用函数指针来做的.
     

  • 相关阅读:
    机器学习-识别手写数字0-9
    tensorflow深度学习-mnist数据集读入-初试
    TensorFlow 2.0 最基础的线性回归
    cuDNN 环境变量-默认安装路径
    INT104-lab2
    [蓝桥杯][历届试题][dfs][割点]危险系数
    2021-03-19:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的最大子矩形,内部有多少个1。
    2021-03-17:手写代码:单链表插入排序。
    2021-03-16:手写代码:单链表归并排序。
    2021-03-15:手写代码:单链表选择排序。
  • 原文地址:https://www.cnblogs.com/dunnice/p/1542695.html
Copyright © 2020-2023  润新知