lacewing udp

    xiaoxiao2022-07-12  146

    1.udp Server
    lacewing::eventpump eventpump = lacewing::eventpump_new(); lacewing::udp udp_server = lacewing::udp_new(eventpump); udp_server->on_data(on_data); udp_server->on_error(on_error); udp_server->host(cfg.Port()); if (udp_server->hosting()) { //LOG_INFO("success listen udp port:"<<cfg.Port()); } else { //LOG_ERROR("failed listen udp port:" << cfg.Port()); } eventpump->start_eventloop(); //LOG_INFO("exit eventloop"); lacewing::udp_delete(udp_server); lacewing::pump_delete(eventpump);
    2.udp Client (NOT SUPPORT)

    因为udp是不需要connet的时候,所以第一反应就是去掉host绑定,指定addr发送数据即可。但是事实总是报告client not ready。查看lacewing::udp 源码发现,udp 只有在host函数调用后才创建socket。所以lacewing不支持udp客户端。

    void lw_udp_host_filter (lw_udp ctx, lw_filter filter) { lw_udp_unhost (ctx); lw_error error = lw_error_new (); if ((ctx->socket = lwp_create_server_socket (filter, SOCK_DGRAM, IPPROTO_UDP, error)) == -1) { if (ctx->on_error) ctx->on_error (ctx, error); return; } ctx->filter = lw_filter_clone (filter); lw_pump_add (ctx->pump, (HANDLE) ctx->socket, ctx, udp_socket_completion); ctx->port = lwp_socket_port (ctx->socket); post_receives (ctx); }
    最新回复(0)