русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ПРИКЛАДИ ПРОГРАМ ДЛЯ РЕАЛІЗАЦІЇ


Дата додавання: 2014-11-27; переглядів: 806.


КЛІЄНТ-СЕРВЕРНОЇ АРХІТЕКТУРИ

 

Лістинг 1 Функція для читання запису змінної довжини (readvrec)

 

1 #include "../etcp.h"

2 int readvrec( SOCKET fd, char *bp, size_t len )

3 {

4 u_int32_t reclen;

5 int rc;

6 rc = readn( fd, ( char * )&reclen, sizeof( u_int32_t ) );

7 if ( rc != sizeof( u_int32_t ) )

8 return rc < 0 ? -1 : 0;

9 reclen = ntohl( reclen );

10 if ( reclen > len )

11 {

12 while ( reclen > 0 )

13 {

14 rc = readn( fd, bp, len );

15 if ( rc != len )

16 return rc < 0 ? -1 : 0;

17 reclen -= len;

18 if ( reclen < len )

19 len = reclen;

20 }

21 set_errno( EMSGSIZE );

22 return -1;

23 }

24 rc = readn( fd, bp, reclen );

25 if ( rc != reclen )

26 return rc < 0 ? -1 : 0;

27 return rc;

28 }

 

6...8 Довжина запису зчитується у змінну reclen. Функція readvrec повертає 0 (завершення файла), якщо число байтів, прочитаних readn, неповністю збігається з розміром цілого, чи 1 — у разі помилки.

9 Розмір запису перетвориться з мережного порядку на машинний.

 

Перевірка буфера

10...23 Перевіряється, чи достатня є довжина буфера, наданого програмою, для розміщення в ньому всього запису. Якщо даних не вистачає, то дані зчитуються в буфер частинами по len байтів. Привласнюється змінній errno значення EMSGSIZE і повертає –1.


 

Зчитування запису

24..27 Зчитується сам запис. readvrec повертає –1, 0 чи reclen залежно від того, чи повернула readn код помилки, неповний лічильник нормального значення.

 


<== попередня лекція | наступна лекція ==>
Закінчення таблиці А4 | Каталог Содержимое


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн