Передача данных через сокет, но программа recv не работает - PullRequest
0 голосов
/ 12 марта 2012

Я создал 2 программы, одну для отправки и другую для получения данных.Итак,

Часть для извлечения данных:

while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) {
   write(fileno(stdout), echoBuffer, recvMsgSize);
}

Если я использую его для восстановления больших файлов данных, он работает хорошо, с небольшим объемом данных он не работает.Я знаю, что проблема с частью recv, потому что, если я использую netcat для восстановления данных, она работает хорошо, она возвращает все данные.Есть ли другой способ получить данные?

Спасибо

1 Ответ

1 голос
/ 12 марта 2012

Я полагаю, ваш сокет блокируется, и recv ожидает отправки байтов RCVBUFSIZE. Сначала вы должны отправить размер файла, который будет отправлен, а затем посчитать, сколько данных вы получили, и запросить оставшуюся часть, только если то, что вам не хватает, меньше байтов RCVBUFSIZE.

...