//------------------------------
//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类型发送数据时,客户端得到它就好了。但是当我发送这样的消息后他会收到很多垃圾。 我正在嘲笑我的阵列有什么问题吗?
答案 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();
}
变量在块的末尾被破坏。