1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bouyei-Bouyei.NetFactory

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
readme.md 4.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:12 d1b0272

Модуль объяснения


#Bouyei.NetFactory на основе .net framework 4.5.1+

#Bouyei.NetFactoryCore на основе .net core 2.2+

#Bystd.NetFactory на основе .net standard 2.1+

Пакет

Пакет NuGet
Bouyei.DbFactory NuGet
Bouyei.NetFactoryCore NuGet
Bystd.DbFactory NuGet

Клиент, сервер подключения пример

int port = 12346;
// Сервер
INetServerProvider serverSocket = NetServerProvider.CreateProvider();
// Получение данных пакета событие
serverSocket.ReceiveOffsetHandler = new OnReceiveOffsetHandler((sToken, buff, offset, count) => {
    try {
        string info = Encoding.UTF8.GetString(buff, offset, count);
        Console.WriteLine(info);
    } catch (Exception ex) {
        Console.WriteLine(ex.ToString());
    }
});
// Получение клиентского соединения
serverSocket.AcceptHandler = new OnAcceptHandler((sToken) => {
    serverSocket.Send(new SegmentOffsetToken() {
        sToken = sToken,
        dataSegment = new SegmentOffset() {
            buffer = Encoding.Default.GetBytes("welcome" + DateTime.Now.ToString())
        }
    }, false);

    Console.WriteLine("accept" + sToken.TokenIpEndPoint);
});
// Получаем отключенное соединение
serverSocket.DisconnectedHandler = new OnDisconnectedHandler((stoken) => {
    Console.WriteLine("disconnect" + stoken.TokenId);
});
bool isOk = serverSocket.Start(port);
if (isOk) {
    Console.WriteLine("Уже запущен сервис...");
    // Клиент
    INetClientProvider clientSocket = NetClientProvider.CreateProvider();

    // Асинхронное подключение
    clientSocket.ReceiveOffsetHandler = new OnReceiveOffsetHandler((sToken, buff, offset, count) => {
        try {
            Console.WriteLine("rec:" + Encoding.Default.GetString(buff,offset,count));
        } catch (Exception ex) {

        }
    });
    clientSocket.DisconnectedHandler = new OnDisconnectedHandler((stoken) => {
        Console.WriteLine("clinet discount");
    });
    again:
    bool rt = clientSocket.ConnectTo(port, "127.0.0.1");/* 10.152.0.71*/
    if (rt) {
        for (int i = 0; i < 10000; i++) {
                Thread.Sleep(50);
            if (i % 100 == 0) {
                Console.WriteLine(clientSocket.BufferPoolCount + ":" + i);
            }
            bool isTrue = clientSocket.Send(new SegmentOffset(Encoding.Default.GetBytes("hello"+DateTime.Now)), false);
        }
    }
}

Пример протокола модуля

INetProtocolProvider protocolProvider = NetProtocolProvider.CreateProvider();
// Данные содержимого упакованы в байты
byte[] content = new byte[] { 1, 3, 4, 0xfe, 0x01, 0xfd, 0x02 };
byte[] buffer= protocolProvider.Encode(new Packet() {
    pHeader = new PacketHeader() {
        packetAttribute = new PacketAttribute() {
            packetCount = 1,// Пользовательский, указывает, сколько сообщений нужно отправить для завершения этого сообщения
        },
        packetId = 0x10// Согласно бизнес-требованиям
    },
    pPayload = content// Содержимое данных
});
// Использование приёмного управления буфером пула для анализа пакетов данных
INetPacketProvider pkgProvider = NetPacketProvider.CreateProvider(1024);
bool rt= pkgProvider.SetBlocks(buffer, 0, buffer.Length);
rt = pkgProvider.SetBlocks(buffer, 0, buffer.Length);
var dePkg= pkgProvider.GetBlocks();

WebSocket пример

WSServerProvider wsService = new WSServerProvider();
wsService.Accepted = new Accepted((SocketToken sToken) => {
    Console.WriteLine("accepted:" + sToken.TokenIpEndPoint);
});
wsService.Disconnected = new Disconnected((SocketToken sToken) => {
    Console.WriteLine("disconnect:" + sToken.TokenIpEndPoint.ToString());
});
wsService.Received = new Received((SocketToken sToken, string content) => {

    Console.WriteLine("receive:" + content);
    wsService.Send(sToken, "hello websocket client! you said:" + content);

});
wsService.ReceivedBytes = new ReceivedBytes((SegmentOffset data) => {
    Console.WriteLine("receive bytes:" + data.size);
});
bool isOk = wsService.Start(65531);
if (isOk)
{
   Console.WriteLine("waiting for accept...");
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/bouyei-Bouyei.NetFactory.git
git@api.gitlife.ru:oschina-mirror/bouyei-Bouyei.NetFactory.git
oschina-mirror
bouyei-Bouyei.NetFactory
bouyei-Bouyei.NetFactory
master