zoukankan      html  css  js  c++  java
  • 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:
    不会,这个是由于事件本质上是使用函数指针来做的.
     

  • 相关阅读:
    461. Hamming Distance
    Myeclipse中WebServlet cannot be resolved to a type报错
    注解方式配置Servlet(Servlet3.0)
    Oracle连接池操作
    最短路径算法
    编写学生类Stu
    编写程序,统计某旅馆住宿客人的总数,要求输入客人姓名,输出客人编号(按先后顺序自动生成),姓名以及总人数。
    货物管理系统
    c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)
    shut
  • 原文地址:https://www.cnblogs.com/dunnice/p/1542695.html
Copyright © 2011-2022 走看看