我正在尝试通过套接字发送plist文件的内容。 userPlist
是ifstream
,文件正确打开,应该如此。但是当它运行时它只会在套接字上发送bplist00?
然后停止。那为什么会这样?这是我的源代码:
if (userPlist.is_open()) {
string line;
int i;
int sizeOfPlist;
char plistChar[128];
while (getline(userPlist, line)) {
sizeOfPlist = line.size();
for (i = 0; i <= sizeOfPlist; i++)
{
plistChar[i] = line[i];
}
line = "\0";
send(sock, plistChar, strlen(plistChar), 0);
for (i = 0; i < 128; i++) {
plistChar[i] = '\0';
}
send(sock, "\n", strlen("\n"), 0);
}
}
如果有人有任何建议或意见,那就太棒了。 感谢。
答案 0 :(得分:1)
建议:如果你的文件在第一行之后停止读取,那么我的猜测是你的while循环是一个问题 - 你检查过while循环是否执行了多次?在调试器中使用断点来执行此操作。我认为getline()不是有效的条件检查,但值得检查
答案 1 :(得分:1)
您的for循环正在执行额外的时间,因为您使用的是<=
而不是<
:
for (i = 0; i <= sizeOfPlist; i++)
// ^^
pListChar
在您将其发送到套接字时不会以空值终止。你需要这一行:
pListChar[sizeOfPlist] = '\0';
send(sock, plistChar, strlen(plistChar), 0);
您也不需要line = "\0";
。