为什么我用CSocket::Create(SOCK_DGRAM)
之后在m_DataSock->Connect("127.0.0.1",5001)
服务器端会有OnAccept的响应,同时OnReceive等事件也会有响应
但是我用CSocket::Create(0,SOCK_DGRAM)
然后再连接就没有任何反应呢?!
不是Create()的第一个参数默认就是0吗 
只是我这里显式的写明就有问题就不同呢?!

解决方案 »

  1.   

    nSocketPortA particular port to be used with the socket, or 0 if you want MFC to select a port.msdn是这么说的,如果你指定0的话,就是容那个mfc选一个端口你在客户端连接的时候是如何断定这个端口是多少的呢第一次是5001,第二次也许久不是了
      

  2.   

    你的Create两者的用法不一样,
    CSocket::Create(SOCK_DGRAM)表示有MFC来分配一个端口。
    而CSocket::Create(0,SOCK_DGRAM)表示表示实用0端口
      

  3.   

    CSocket::Create
    BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL );
    看了一个函数的声明,所有的参数都是带默认值的带默认值的函数的参数对应试从左向右开始的.
    CSocket::Create(SOCK_DGRAM)的意思是把SOCK_DGRAM辅给nSocketPort,其他的用默认值
    CSocket::Create(0,SOCK_DGRAM)的意思是把0赋值给nSocketPort,SOCK_DGRAM赋值给nSocketType他们的差别很大的
      

  4.   

    我第一次用CSocket编程,中间有些问题:
             if(m_ListenSocket.Create(1500))
    {
    m_ListenSocket.Listen();
    m_ListenSocket.m_pParentWnd=this;
    }
    else
    AfxMessageBox("Create the Socket Failed!");        程序走到这儿执行的是else{},请问这都有可能是什么原因呢?