Модератор: Модераторы разделов
AlexRat
Сообщения: 88
Сообщение
AlexRat » 12.06.2005 22:51
Подскажите, пожалуйста, как решить такую задачку: допустим мне нужно передавать и принимать информацию через сеть. Для этого логично использовать Internet sockets. Но вряд ли разумно передавать одним вызовом функции write сразу несколько мегабайт
Тоже самое и с чтением. Подскажите, какими порциями оптимально выбирать информацию из сокета и наоборот отправлять через сокет?
Заранее благодарен.
Наверняка ответ очень прост, но я не смог его найти, может не в той стороне искал
Alagert
Сообщения: 167
Сообщение
Alagert » 13.06.2005 00:30
Честно говоря оптимального решения я не знаю, но самый распространенный вариант который я видел 4K.
Born to be ROOT
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих
Сообщение
elide » 13.06.2005 05:15
Тоже самое и с чтением.
с чтением не то же самое. читать лучше по готовности данных. и читать столько - сколько есть.
слава роботам!
AlexRat
Сообщения: 88
Сообщение
AlexRat » 13.06.2005 10:06
Как проверить наличие данных в сокете я нашел:
Код: Выделить всё
int checkDataInSocket (int sockfd) {
struct timeval tv;
fd_set read_fd;
tv.tv_sec = 0;
tv.tv_usec = 0;
FD_ZERO (&read_fd);
FD_SET (sockfd, &read_fd);
if (select (sockfd + 1, &read_fd, NULL, NULL, &tv) == -1) {
return 0;
}
if (FD_ISSET(sockfd, &read_fd)) {
return 1;
}
return 0;
}
А как узнать сколько байт ожидает чтения ???
oav
Бывший модератор
Сообщения: 296
Сообщение
oav » 13.06.2005 12:35
(AlexRat @ Понедельник, 13 Июня 2005, 10:06) писал(а): А как узнать сколько байт ожидает чтения ???
Ну, я думаю ты читай стока, скока у тебя буффер, а read тебе вернет сколько реально прочитано
)
AlexRat
Сообщения: 88
Сообщение
AlexRat » 13.06.2005 13:46
(oav @ Понедельник, 13 Июня 2005, 12:35) писал(а): Ну, я думаю ты читай стока, скока у тебя буффер, а read тебе вернет сколько реально прочитано
)
Я просто подумал, что есть какой-то способ узнать
Jenizix
Сообщения: 53
Сообщение
Jenizix » 16.06.2005 23:25
А я всегда передаю по 1024 байта и делаю буфер тоже 1024байта... так лече... да и можно скорость пощитать...
Ушел в себя, вернусь не скоро...
________________________________
Slackware 10.1 / FluxBox 0.9.13