Skip to content

Библиотека синхронных не блокирующих кроcсплатформеных socket-ов

License

Notifications You must be signed in to change notification settings

DemonSinusa/XTcpSocket

Repository files navigation

XTcpSocket

Библиотека синхронных не блокирующих кроcсплатформеных socket-ов Краткое описание:

** "TCPClient.h"**

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));

Всевозможные событийные функции, вызываются когда наступает определенное событие или не вызываются если не назначены. Возвращает количество назначеных событий. !Каждый вызов как первый!

  1. int (*OnRead)(SCT *cl, char *buf, int len)- Вызывается когда есть входящий поток buf размером len. (return!=0)Disconect();

  2. int (*OnWrite)(SCT *cl, int len)- Вызывается после отправки буфера длиной len.(return!=0)Disconect();

  3. void (*OnDisconnected)(SCT *cl)- Вызывается после закрытия соединения

  4. 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); Завершение сесии и чистка структуры.

"TCPServer.h"

Серверная часть библиотеки это продолжение клиентской составляющей с переназначеными обработчиками Клиентов и добавочными функциями Сервера.

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));

Всевозможные событийные функции, вызываются когда наступает определенное событие или не вызываются если не назначены.
Возвращает количество назначеных событий. !Каждый вызов как первый!

  1. void (*OnConnected)(SST *serv, SCT *cl)-Вызывается в момент связывания с новым клиентом (*cl).

  2. int (*OnRead)(SST *serv, SCT *cl, char buf, int len)-Вызывается для каждого отдельного клиента (.cl) с массивом buf размером len

  3. int (*OnWrite)(SST *serv, SCT cl, int len)-Вызывается после отправки клиенту (.cl) буфера длиной len

  4. void (*OnDisconnected)(SST *serv, SCT cl)-Вызывается после отключения клиента (.cl)

  5. 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:Ошибка передачи данных.

About

Библиотека синхронных не блокирующих кроcсплатформеных socket-ов

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages