我已经和服务器建立连接了,然后怎么写流数据给服务器呢?上下行都是UTF-8格式的。主要代码如下:HRESULT CMyConnection::Init()
{
    GUID    m_gNetwork; 
    HRESULT hr = ConnMgrMapURL(L"http://www.baidu.com", &m_gNetwork, 0);
    if(SUCCEEDED(hr))
    {
        // AfxMessageBox(L"测试成功!");
        DWORD dwStatus = 0;
        //HANDLE hConnection = NULL;
        CONNMGR_CONNECTIONINFO sConInfo;
        memset(&sConInfo, 0 ,sizeof(CONNMGR_CONNECTIONINFO));
        sConInfo.cbSize = sizeof(CONNMGR_CONNECTIONINFO);
        sConInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
        sConInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
        sConInfo.dwFlags = CONNMGR_FLAG_PROXY_HTTP|CONNMGR_FLAG_PROXY_WAP|CONNMGR_FLAG_PROXY_SOCKS4|CONNMGR_FLAG_PROXY_SOCKS5;
        sConInfo.bExclusive = FALSE;
        sConInfo.bDisabled = FALSE;
        sConInfo.guidDestNet = m_gNetwork;
        hr = ConnMgrEstablishConnectionSync(&sConInfo, &hConnection, 15000, &dwStatus);
    }
    else
    {
        //AfxMessageBox(L"获取连接失败");
        //::SetDlgItemText((HWND)param,IDC_STATIC_STATUS,L"连接失败!");
    }
    return hr;
}BOOL CMyConnection::GetConnectionStatus ( int nTimeoutSec, DWORD *pdwStatus/*=NULL*/ )
{
    DWORD dwStartTime = GetTickCount ();
    BOOL bRet = FALSE;
    while ( GetTickCount ()-dwStartTime < (DWORD)nTimeoutSec * 1000 )
    {
        if ( hConnection )
        {
            DWORD dwStatus = 0;
            HRESULT hr = ConnMgrConnectionStatus ( hConnection, &dwStatus );
            if ( pdwStatus ) *pdwStatus = dwStatus;
            if ( SUCCEEDED(hr) )
            {
                if ( dwStatus == CONNMGR_STATUS_CONNECTED )
                {
                    bRet = TRUE;
                    break;
                }
            }
        }
        Sleep ( 100 );
    }    return bRet;
}CString CMyConnection::Connect()
{
    HINTERNET hHttpOpen = NULL; 
    hHttpOpen = InternetOpen( TEXT("Dopad"),//as user agent 
        PRE_CONFIG_INTERNET_ACCESS, 
        NULL, 
        INTERNET_INVALID_PORT_NUMBER, 
        0); 
    if (!hHttpOpen) 
    { 
        AfxMessageBox(TEXT("hHttpOpen failed!")); 
        return L"";
    } 
    wprintf(L"连接URL:"+url);    CString ip = L"";
    CString port = L"";
    int temp = url.Find(L"http://",0);
    if(temp > 0)
    {
        AfxMessageBox(L"不是有效的url:http地址");
        return L"";
    }
    else
    {
        url = url.Mid(7);
        int i = url.Find(L":",0);
        ip = url.Left(i);
        url = url.Mid(i+1);
        i = url.Find(L"/",0);
        port = url.Left(i);        url = url.Mid(i+1);
    }    //使用InternetConnect函数连接 
    HINTERNET hHttpSession = NULL; 
    hHttpSession = InternetConnectW( hHttpOpen,//当前会话句柄 
        ip, //Internet服务器主机名称 
        (INTERNET_PORT)_wtoi(port),//INTERNET_DEFAULT_HTTP_PORT, //HTTP端口 
        NULL, 
        NULL, 
        INTERNET_SERVICE_HTTP, //服务器类型 , HTTP 
        0, 
        0); 
    if (!hHttpSession) 
    { 
        AfxMessageBox(TEXT("hHttpSession failed!")); 
        //ExitProcess(101);//当HttpSendRequest出错的时候,退出进程 
        return L"";
    } 
    HINTERNET hHttpRequest = NULL; 
    hHttpRequest = HttpOpenRequestW( hHttpSession,//InternetConnect()函数返回的HTTP会话句柄 
        TEXT("POST"),//动词名称
        url,//指向包含动词的目标对象名称的字符串, 
        HTTP_VERSION,//指向包含HTTP版本的字符串 
        NULL, 
        NULL, 
        INTERNET_FLAG_DONT_CACHE, 
        0); 
    if (!hHttpRequest) 
    { 
        AfxMessageBox(TEXT("hHttpRequest failed!")); 
        return L"";
    }     CString header=L"";
    if(sessionId.GetLength()>0)
    {
        //header = L"Accept:*/*\r\nAccept-Language:zh-cn\r\nUser-Agent:VCTestClient\r\n";
        header.Format(L"Cookie JSESSIONID=%s",sessionId);
        wprintf(L"header:%s\n",header);
    }
    /*if(!HttpSendRequestW( hHttpRequest, header, header.GetLength(), NULL,0 ))
    { 
        AfxMessageBox(TEXT("HttpSendRequest failed!")); 
        InternetCloseHandle(hHttpOpen); 
        InternetCloseHandle(hHttpSession); 
        InternetCloseHandle(hHttpRequest); 
        return L"";
    } */
    DWORD dwRecvLen; 
    DWORD dwStatus;
    DWORD dwLengthSize = sizeof(DWORD);     if(!HttpQueryInfoW(hHttpRequest, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwLengthSize, NULL)) 
    { 
        AfxMessageBox(TEXT("HttpQueryInfo failed!"));
        return L"";
    }
    else
    {
        if(dwStatus>=200 && dwStatus<=300)
        {
            if(!HttpQueryInfoW(hHttpRequest, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &dwRecvLen, &dwLengthSize, NULL)) 
            { 
                AfxMessageBox(TEXT("HttpQueryInfo failed!"));
                InternetCloseHandle(hHttpRequest); 
                InternetCloseHandle(hHttpSession); 
                InternetCloseHandle(hHttpOpen); 
                return L"";
            } 
        }
        else
        {
            CString log ;
            log.Format(L"HTTP 错误,代码:%d\n",dwStatus);
            wprintf(log);
        }
    }
    char* pRecvBuf = new char[1024*10+1];//接受到的数据     
    DWORD dwReadSize; 
    BOOL  bNewRecvBuf = TRUE; 
    CString recContent=L"";
    //循环接收数据 
    //while (0 < dwRecvLen) 
    //{ 
        if(!InternetReadFile(hHttpRequest, pRecvBuf, 1024*10, &dwReadSize)) 
        { 
            if(bNewRecvBuf) 
                delete [] pRecvBuf; 
            InternetCloseHandle(hHttpRequest); 
            InternetCloseHandle(hHttpSession); 
            InternetCloseHandle(hHttpOpen); 
        } 
        dwRecvLen -= dwReadSize; 
        pRecvBuf[dwReadSize] = '\0'; 
        
        //转码
        DWORD dwNum = MultiByteToWideChar (CP_UTF8, 0, pRecvBuf, -1, NULL, 0);        //接下来,我们只需要分配响应的数组空间:
        TCHAR *pwText;
        pwText = new TCHAR[dwNum];
        if(!pwText)
        {
            delete []pwText;
        }        //接着,我们就可以着手进行转换了.在这里以转换成utf-8码做为例子:
        MultiByteToWideChar (CP_UTF8, 0, pRecvBuf, -1, pwText, dwNum);        recContent += pwText;
        
        
        wprintf(L"接收到"+recContent+L"\n");
        //最后,使用完毕当然要记得释放占用的内存:
        delete []pwText;
        delete []pRecvBuf;
        
    //} 
    
    /*::MultiByteToWideChar(CP_ACP, 0, url, -1, NULL, 0,NULL,NULL)
    int len = ::WideCharToMultiByte(CP_ACP, 0, url, -1, NULL, 0,NULL,NULL);
    char* mCharUrl = new char[len+1];
    ::WideCharToMultiByte(CP_ACP, 0, url, -1, mCharUrl, len,NULL,NULL);*/
    return recContent;
}