Библиотека синхронных не блокирующих кроcсплатформеных socket-ов Краткое описание:
SCT *InitClient(int domain, int type, int flags, int protocol, int rbuflen);
Инициализация сесии все параметры дублируют системные параметры за исключением размера буфера rbuflen. Это размер буфера приема-передачи (размер окна) для медленных соединений меньший буфер. Ничего лишнего придумывать не надо.
int SetCallBacksC(SCT *cl,
int (*OnRead)(SCT *cl, char *buf, int len),
int (*OnWrite)(SCT *cl, int len),
void (*OnDisconnected)(SCT *cl),
void (*OnErr)(SCT *cl, int err));
Всевозможные событийные функции, вызываются когда наступает определенное событие или не вызываются если не назначены. Возвращает количество назначеных событий. !Каждый вызов как первый!
-
int (*OnRead)(SCT *cl, char *buf, int len)- Вызывается когда есть входящий поток buf размером len. (return!=0)Disconect();
-
int (*OnWrite)(SCT *cl, int len)- Вызывается после отправки буфера длиной len.(return!=0)Disconect();
-
void (*OnDisconnected)(SCT *cl)- Вызывается после закрытия соединения
-
void (*OnErr)(SCT *cl, int err))- Вызывается при различных ошибках возвращает код ошибки. Рекомендую определить int OnRead(SCT *cl, char *buf, int len) без нее не получится прочитать входной поток, он будет игнорироваться.
int Open(SCT *cl, char *host, char *port); Попытка соединиться host может быть доменным именем и port можно текстом возвращает
-
0 при успехе.
-
-1 при ошибке преобразования адреса.
-
-2 при ошибке получения информации о хосте.
int Start_Read(SCT *cl,int rbuflen); Зарускает чтение сокета в отдельном потоке (можно переназначить размер окна) возвращает
-
1 при успехе.
-
0 при ошибке потока
-
-1 при ошибке клиента
int Send(SCT *cl, char *buf, int len); Отправка buf размером len. Возвращает количество переданных байт.
void Close(SCT *cl); Закрывает открытый сокет, можно вновь использовать Connect();
void FinitClient(SCT *cl); Завершение сесии и чистка структуры.
Серверная часть библиотеки это продолжение клиентской составляющей с переназначеными обработчиками Клиентов и добавочными функциями Сервера.
SST *InitServer(int domain, int type, int flags, int protocol, int rbuflen);
нициализация сесии все параметры дублируют системные параметры за исключением размера буфера rbuflen. Это размер буфера приема-передачи (размер окна) для медленных соединений меньший буфер. Ничего лишнего придумывать не надо.
int SetCallBacksS(SST *serv,
void (*OnConnected)(SST *serv, SCT *cl),
int (*OnRead)(SST *serv, SCT *cl, char *buf, int len),
int (*OnWrite)(SST *serv, SCT *cl, int len),
void (*OnDisconnected)(SST *serv, SCT *cl),
void (*OnErr)(SST *serv,SCT *cl, int err));
Всевозможные событийные функции, вызываются когда наступает определенное событие или не вызываются если не назначены.
Возвращает количество назначеных событий.
!Каждый вызов как первый!
-
void (*OnConnected)(SST *serv, SCT *cl)-Вызывается в момент связывания с новым клиентом (*cl).
-
int (*OnRead)(SST *serv, SCT *cl, char buf, int len)-Вызывается для каждого отдельного клиента (.cl) с массивом buf размером len
-
int (*OnWrite)(SST *serv, SCT cl, int len)-Вызывается после отправки клиенту (.cl) буфера длиной len
-
void (*OnDisconnected)(SST *serv, SCT cl)-Вызывается после отключения клиента (.cl)
-
void (*OnErr)(SST *serv,SCT *cl, int err))-Вызывается при различных ошибках.
int Listen(SST *, char *host, char *port); Попытка поставить на прослушку host может быть доменным именем или NULL и port можно текстом. возвращает
-
0 при успехе.
-
-1 при ошибке преобразования адреса.
-
-2 при ошибке привязки к адресу.
-
-3 при ошибке установки на прослушку.
-
-4 при ошибке создания потока.
void Todeaf(SST *serv); Глушит прослушку оставляя клиентов связанными, можно снова открыть сервер Listen();
int SendToClient(SCT *cl, char *buf, int len); Отправка подключенному клиенту cl данных buf размером len. Возвращает количество переданных байт.
void FinitServer(SST *); Завершение сесии и чистка структуры.
Коды ошибок: -10:Ошибка преобразования имени -20:Ошибка связывания сокета -30:Ошибка установки свойств сокета -40:Ошибка установки на прослушку -50:Ошибка установки свойств потока -60:Ошибка запуска потока -100:Ошибка передачи данных.