
Lib_binsock
Библиотека для работы с сокетами в трех режимах:
- побайтно (прием/передача)
- прием/передача массивов бинарных данных
- InputStream (Resource)

---


Библиотека содержит следующие функции:


=> procedure debug_register(idx:integer);

Устанавливает библиотеке идентификатор, который будет передаваться
в обработчик ошибок (о нем ниже) в случае возникновения исключительной 
ситуации(Exception).





=> procedure enable_debug(flag:integer);

Включает/отключает режим отладки.
flag = 1 - включить
flag = -1 - выключить
По умолчанию отладка отключена.

Если отладка включена, то в случае возникновения ошибки
вызывается процедура-обработчик, определенная в главной программе, например:

[КОД]
//sender - числовой идентификатор библиотеки, присваиваемый с помощью debug_register
//exception - системное сообщение об ошибке
//errstr - дополнительное сообщение (указанное при компиляции библиотеки)
//code - код ошибки (указанный при компиляции библиотеки)
procedure onerror(sender:Integer;exception:string;errstr:string;code:integer);
//Имя процедуры, порядок и тип параметров должны быть соблюдены !
begin
 cmOK:=CreateCommand('OK',CM_OK,1);
 ShowAlert('Error #'+IntegerToString(code),'Exception: '+exception+chr(10)+chr(13)+'ErrorString: '+errstr, LoadImage('/icon.png'),ALERT_ERROR);
 delay(20000);
 ShowForm;
end;
[КОД]

Параметр code может иметь следующие значения:

 int ERR_OPENERROR  = 0; - ошибка открытия сокета
 int ERR_CLOSEERROR = 1; - ошибка закрытия сокета
 int ERR_AVAILERROR = 2; - ошибка при определении размера буфера
 int ERR_READERROR  = 3; - ошибка получения данных
 int ERR_WRITEERROR = 4; - ошибка записи данных
 int ERR_FLUSHERROR = 5; - ошибка отправки буфера

Внимание!
В случае, если отладка включена, обработчик должен присутствовать обязательно,
иначе возможен сбой в работе мидлета; если отладка отключена, обработчик объявлять
не обязательно.





=> function open(url:string):integer;

Открывает соединение с адресом url.
Формат url стандартный:
socket://url:port

Возвращает 1 в случае успеха, иначе возвращает -1 и передает в обработчик сообщение об
ошибке ERR_OPENERROR.





=> procedure close;

Закрывает соединение.
В случае неудачи передает в обработчик сообщение об ошибке ERR_CLOSEERROR.





=> function available:integer;

Возвращает размер доступных для приема данных.
В случае неудачи возвращает -1 и передает в обработчик сообщение об ошибке ERR_AVAILERROR.





=> function read_byte:integer;

Возвращает следующий байт данных из буфера приема, в случае неудачи возвращает -1 и 
передает в обработчик сообщение об ошибке ERR_READERROR.





=> function write_byte(data:integer):integer;

Записывает в буфер передачи байт data.
Возвращает 1 в случае успеха, иначе возвращает -1 и передает ошибку ERR_WRITEERROR.





=> function get_in_stream:resource;

Возвращает поток resource для подключения.





=> function write_bin(data:string):integer;

Записывает массив байт data в поток передачи.
Возвращает 1 в случае успеха, иначе возвращает -1 и передает ошибку ERR_WRITEERROR.





=> function read_bin(len:integer):string;

Возвращает массив байт из входящего потока.
В случае неудачи возвращает null и передает в обработчик сообщение ERR_READERROR.





=> function rx_count:integer;

Возвращает количество принятых данных.





=> function tx_count:integer;

Возвращает размер принятых данных. 





=> function flush:integer;

[версия >= 1.1]

Инициирует немедленную отправку данных на сервер

Возвращает 1 в случае успеха, иначе возвращает -1 и передает в обработчик сообщение об ошибке 
ERR_FLUSHERROR.





ВНИМАНИЕ!
Библиотека требует доступа к сети


Пример использования в папке Example
(протестировано на Motorola L9)


---

by ViNT
