if (m_socketRmoteRegSend.m_hSocket != INVALID_SOCKET)
      {
    m_socketRmoteRegSend.Close();
    m_socketRmoteRegSend.m_hSocket = INVALID_SOCKET;       }
括号里面的条件是什么意思呢? 程序运行到Close以后就不往下面走了。  
把它们屏蔽掉后运行int iTempPort = 36210;
m_socketRmoteRegSend.Connect(gszSelectedIP,36210);
程序每次运行到这个Connect的时候就会报错,错误信息是
DvoRemoteSet.exe 中的 0x7c204a3f (mfc71.dll) 处未处理的异常: 0xC0000005: 读取位置 0x0000003c 时发生访问冲突 。
这个是什么意思呢?

解决方案 »

  1.   

    哦 那个Connect里面第一个是服务端IP地址 
      

  2.   

    socket有效关闭socket,并置socket无效.
    gszSelectedIP这个你是怎么定义的,把相关代码贴完整些吧.
      

  3.   

    m_socketRmoteRegSend
    有效吗?
      

  4.   

    应该是关闭socket用的
    if (m_socketRmoteRegSend.m_hSocket != INVALID_SOCKET)//如果socket可用
      {
      m_socketRmoteRegSend.Close();//关闭
      m_socketRmoteRegSend.m_hSocket = INVALID_SOCKET;//设置不可用  }
      

  5.   

    套接字什么时候会有效呢? 
    我不怎么会用
    是添加了一个基于CAsyncSocket的类CSocketRmoteRegSend
    CSocketRmoteRegSend m_socketRmoteRegSend;
    在这个类里面有OnReceive和OnSend函数
    在发送连接里面第一次用到这个套接字
           if (m_socketRmoteRegSend.m_hSocket != INVALID_SOCKET)
          {
         m_socketRmoteRegSend.Close();
         m_socketRmoteRegSend.m_hSocket = INVALID_SOCKET;      }
    if (m_socketRmoteRegSend.m_hSocket == INVALID_SOCKET)
    { /*
    BOOL bFlag = m_socketRmoteRegSend.Create(0,SOCK_STREAM, FD_CONNECT);
    if (!bFlag)
    {
    AfxMessageBox("net bak fail");
    m_socketRmoteRegSend.Close();
    }
    AfxMessageBox("创建套接字成功!"); int iTempPort = 36210; int nErr = m_socketRmoteRegSend.Connect(gszSelectedIP,iTempPort);
    if(nErr == 0)
    {
    if(m_socketRmoteRegSend.GetLastError() != WSAEWOULDBLOCK)
    {
    AfxMessageBox("net 60000 connect Error");
    m_socketRmoteRegSend.Close();
    return;
    }
    }
        }
    刚才又看了下CAsyncSocket. 然后直接用Create。
    BOOL bFlag = m_socketRmoteRegSend.Create(36210,SOCK_STREAM,FD_CONNECT,gszSelectedIP);
    if (!bFlag)
    {
    AfxMessageBox("net bak fail");
    m_socketRmoteRegSend.Close();
    }
    但是还是错误。
      

  6.   

    gszSelectedIP是服务端的IP地址 192.168.1.25 这个没问题的应该
      

  7.   

    使用时是不是已初始化套接字呢
    AfxSocketInit()
    Call this function in your CWinApp::InitInstance override to initialize Windows Sockets.
    if (!AfxSocketInit())
    {
    AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
    return FALSE;
    }
      

  8.   


    不懂 呵呵, 那个if语句里面第一次出现这个socket句柄 应该是无效才对  但是它有效的。 然后close让他无效,但是close以后却不继续往前面走了。。我跟过去以后, 那个iTempPort没有值   还是不知道怎么解决