Функции recv и recvln
И клиент, и сервер могут использовать, функцию геcv для доступа к данным,
поступающим по сети.
int recv( connection соn, char *buffer, int length, int flags)
Этот вызов принимает четыре параметра. Первый параметр обозначает соединение, установленное ранее с помощью функции await_contact, второй представляет собой адрес буфера, в который должны быть размещены данные, третий параметр задает длину буфера в байтах (октетах), а четвертый при обычной передаче равен нулю, функция recv возвращает число, байтов, помещенных в буфер; ноль для обозначения того, что был достигнут конец файла; или отрицательное значение, если возникла ошибка.
В этом примере кода применяется также библиотечная функция recvln, которая повторно вызывает функцию recv до тех пор, пока не будет получена целая строка текста. Определение функции recvln приведено ниже;
int recvln( connection соn, char *buffer, int length)
Функция send_eof
И клиент, и сервер после отправки данных должны вызвать функцию send_eof для передачи второму участнику соединения сообщения о том, что передача данных на этом закончена. На другом конце соединения функция геcv при получении признака конца файла возвращает значение ноль.
int send_еоf(сonnection сon)
Этот вызов принимает один параметр, который указывает соединение, ранее установленное с помощью функции await_contact или make_contact. Функция возвращает отрицательное значение для указания на то, что возникла ошибка; в ином случае — положительное значение или ноль.
Сводные данные по АРI-интерфейсу
В Таблица 3 приведены сводные данные по параметрам функции каждого типа, которые используются в этом примере АР1-интерфейса. В таблице показан тип каждого параметра, а также тип возвращаемого значения.
Таблица 3 Сводные данные по типам параметров и возвращаемым значениям для примера АР1-интерфейса
Имя функции
|
Тип возвращаемого значения
|
Тип параметра 1
|
Тип параметра 2
|
Тип параметров З и 4
|
await_contact
|
connection
|
appnum
|
|
|
make_contact
|
connection
|
computer
|
appnum
|
|
aррname_to_аррnum
|
appnum
|
сhаг *
|
|
|
cname_to_comp
|
computer
|
сhаг *
|
|
|
send
|
int
|
connection
|
сhаг *
|
int
|
rесv
|
int
|
connection
|
сhаг *
|
int
|
send_eof
|
int
|
connection
|
|
|
В следующих разделах приведены примеры прикладных программ, которые показывают, как этот АРI-интерфейс может применяться в клиентском и серверном программном обеспечении для обмена данными2.
Достарыңызбен бөлісу: |