发送数据问题TCP / IP

时间:2012-05-23 17:45:20

标签: c++ tcp

//------------------------------
    //creating dynamic array to send
    std::list<char> list;
    char in=NULL;
    while(1)
    {
        scanf("%c",&in);
        if(in=='\n') break;
        list.push_back(in);
    }
    //char *sendbuf=NULL;
    char* sendbuf=new char[list.size()]; // create a dynamic array   

        std::copy(list.begin(),list.end(),sendbuf); // copy the data 
        //sendbuf=array;
        iResult_send = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 );
        delete [] sendbuf; // destroy the dynamic array
        list.clear();
}
//-------------------------------------------

大家好, 我正在尝试通过我正在创建的dinamic数组向客户端发送数据。 当我用静态数组char类型发送数据时,客户端得到它就好了。但是当我发送这样的消息后他会收到很多垃圾。 我正在嘲笑我的阵列有什么问题吗?

2 个答案:

答案 0 :(得分:1)

iResult_send = send( ConnectSocket, sendbuf, (int)strlen(sendbuf) , 0 );

邮件大小确定错误。尝试对它使用list.size()。

答案 1 :(得分:0)

问题是:您的数据不是以null结尾,因此strlen()不会产生正确的大小。 (大概是一种很有价值的方式)。

正确的是:

    iResult_send = send( ConnectSocket, sendbuf, sizeof(char) * list.size(), 0 );

btw:你可以省略

        list.clear(); 
    }

变量在块的末尾被破坏。