Я пытаюсь отправить содержимое файла 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);
}
}
Если у кого-то есть какие-либо предложения или советы, это было бы здорово.
Благодарю.
Предложение: Если ваш файл перестает читать после первой строки, то я предполагаю, что это проблема вашего цикла while. Вы проверили, выполняется ли цикл while более одного раза? Для этого используйте точки останова в отладчике. Я не думаю, что getline () является действительной условной проверкой, но стоит проверить
Ваш цикл for выполняет дополнительное время, потому что вы используете <=
вместо <
:
for (i = 0; i <= sizeOfPlist; i++)
// ^^
pListChar
не завершается нулем к тому времени, когда вы отправляете его в сокет. Вам нужна эта строка:
pListChar[sizeOfPlist] = '\0';
send(sock, plistChar, strlen(plistChar), 0);
Вам также не нужно line = "\0";
,