asio學習之 UDP伺服器

2021-09-29 16:54:51 字數 1438 閱讀 5928

想找乙個好的c++網路庫,選來選去都不太滿意,

mudo不支援windows,也不支援udp,

evpp 有點複雜,

libevent是c語言的,

最後感覺還是asio最完善,支援最好,據說c++20標準中可能標準化,所以就進行一些學習。

1.基本使用

需要定義 asio_standalone   單獨使用asio不使用boost的。

windows平台下要定義 _win32_winnt,具體可參見

2.udp server 的基本例子,原始碼從asio的examples/cpp03/echo/async_udp_echo_server.cpp中取出,進行了一點小改動

主要是我用的是vs2015,有c++11,原來的**依賴於boost。

記錄如下:

1.同步版

#define asio_standalone	

#define d_win32_winnt 0x0501

#include #include using namespace std;

using namespace asio;

int main(int argc, char* ar**)

return 0;

}

2.非同步版

#define asio_standalone	

#define _win32_winnt 0x0601

#include #include #include "asio.hpp"

using asio::ip::udp;

using namespace std;

class server

void handle_receive_from(const asio::error_code& error,

size_t bytes_recvd)

else

}void handle_send_to(const asio::error_code& /*error*/,

size_t /*bytes_sent*/)

private:

udp::socket socket_;

udp::endpoint sender_endpoint_;

enum ;

char data_[max_length];

};int main(int argc, char* ar**)

asio::io_context io_context;

using namespace std; // for atoi.

server s(io_context, atoi("2300"));

io_context.run();

} catch (std::exception& e)

return 0;

}

mysql udp伺服器 UDP伺服器

傳輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線。只專心獲取資料就...

UDP簡單伺服器

udp簡單伺服器與客戶端 這裡用到了 recvfrom 表示接受來自何處的連線請求資訊 sendto 要向何處傳送 下面這段 是伺服器原始碼 下面主要用到 socket 建立udp協議的套接字 bind 繫結本機三元資訊 recvfrom 接收客戶端向本機伺服器傳送來得資訊 sendto 向客戶端傳...

基於UDP協議的伺服器 UDP伺服器建立方案

udp伺服器就是實現乙個基於udp協議的伺服器來與客戶端通訊。就是用來收發資料,進行資料處理的。與tcp伺服器不同的是不用建立連線,直接呼叫recvfrom來收包。跟tcp伺服器一樣,udp伺服器也可以通過使用 socketserver 庫很容易地被建立。先定義乙個實現 handle 特殊方法的類,...