本帖最后由 VisualEleven 于 2011-04-11 15:59:58 编辑

解决方案 »

  1.   

    本帖最后由 VisualEleven 于 2011-04-11 16:00:14 编辑
      

  2.   

    执行到这里m_send_addr.sin_addr.S_un.S_addr=inet_addr((char*)ip);
    ip的值是多少?
      

  3.   

    strip->GetBuffer(strip->GetLength())
    改成
    strip->GetString();
      

  4.   

    这样试一下
    CString strIP;
    m_ip_ed.GetWindowTextW(strIP); ip = strip->GetBuffer(strip->GetLength());  
    m_cli_socket = socket(AF_INET, SOCK_STREAM, 6); m_send_addr.sin_family = AF_INET;
    m_send_addr.sin_port = htons(12651);
    m_send_addr.sin_addr.S_un.S_addr = inet_addr(strIP.GetBuffer()); if(SOCKET_ERROR==connect(m_cli_socket,(sockaddr*)&m_send_addr,sizeof(m_send_addr)))
    {
    MessageBox(_T("连接失败"));
    }
      

  5.   

    注意你的编码环境,多字节还是Unicode
      

  6.   

    可能是编码问题导致你inet_addr转化失败,
    CString *strip=new CString();
    m_ip_ed.GetWindowTextW(*strip);你用的是宽字符,但inet_addr要求非宽字符,这个地方你要转一下,把宽字符转换成ASC码试下。
      

  7.   

    有人能帮个忙吗?FLASH无法从缓存里加载!!我用自己写的浏览器,第一次能正确进入游戏,但再次进入时,因为这时的FLASH被缓存了,而导致不能进入(把缓存清了就可以了)!
    我用其它浏览器(IE,360,MAXTHON)都能进入,就是自己写的不能进入,不知怎么回事!!测试地址:这是一个FLASH网页游戏,没有PPS帐号的,请先注册一个帐号
    http://g.pps.tv/mcsd
      

  8.   

    CString *strip=new CString();
    m_ip_ed.GetWindowTextW(*strip);CStringA sip = *strip;
            ip=sip ->GetBuffer(sip ->GetLength()); 
            m_cli_socket = socket(AF_INET,SOCK_STREAM,6);
            m_send_addr.sin_family=AF_INET;
            m_send_addr.sin_port=htons(12651);
            m_send_addr.sin_addr.S_un.S_addr=inet_addr((char*)ip);
        
            if( SOCKET_ERROR==connect(m_cli_socket,(sockaddr*)&m_send_addr,sizeof(m_send_addr)))
            {
                MessageBox(_T("连接失败"));
            }
      

  9.   

     不能说以上代码是否优劣 但是 在对字符处理方面总是看起来不是很舒服 而且好多并不能理解宽字符和窄字符的区别 而且也没有能搞明白 socket api 是使用在什么字符状态下的    CString    strIP;
        m_ip_ed.GetWindowText(strIP);//这里不要加 m_ip_ed.GetWindowTextW    m_cli_socket    = socket(AF_INET, SOCK_STREAM, 6);    m_send_addr.sin_family                = AF_INET;
        m_send_addr.sin_port                = htons(12651);
        USES_CONVERSION;
        m_send_addr.sin_addr.S_un.S_addr    = inet_addr(T2A(strIP));//使用T2A的宏将Cstring转换成 char*    if(SOCKET_ERROR==connect(m_cli_socket,(sockaddr*)&m_send_addr,sizeof(m_send_addr)))
        {
            MessageBox(_T("连接失败"));
        }