netcpp
0.5.0
[한국어]
netcpp est une simple bibliothèque réseau C++. Il prend en charge les plateformes Windows et Linux.
Cette bibliothèque prend en charge le port vcpkg. Si vous aviez déjà installé vcpkg, vous pouvez installer ce package simplement avec la ligne de commande ci-dessous.
vcpkg install netcpp # In classic mode
vcpkg add port netcpp # In manifest mode
Ou clonez ce référentiel et exécutez la ligne de commande ci-dessous.
git clone https://github.com/index1207/netcpp.git && cd netcpp # clone and move directory
cmake -B build # CMake Configuration
cmake --build build --config < BUILD_MODE > # Build library
cmake --install build --config < BUILD_MODE > --prefix < PATH_TO_INSTALL > # Install to other project
netcpp fournit des cibles CMake :
find_package (netcpp CONFIG REQUIRED)
target_link_libraries (main PRIVATE netcpp::netcpp)
Option | Description |
---|---|
NETCPP_BUILD_SHARED | Construire par bibliothèque partagée |
NETCPP_TEST | Inclure le test unitaire dans la construction |
// <net/socket.hpp>
net::socket tcp_socket (net::protocol::tcp); // Create a TCP socket
net::socket udp_socket (net::protocol::udp); // Create a UDP socket
net::socket empty_socket;
empty_socket.create(net::protocol::tcp); // Create a new TCP socket
// <net/context.hpp>
net::socket sock (net::protocol::tcp); // Create a new TCP socket.
net::context connect_ctx; // A context that necessary to async I/O
connect_ctx.endpoint = ENDPOINT; // Specify the endpoint.
connect_ctx.completed = [](net::context* ctx, bool success) { // callback
if (success)
{
std::cout << " Connected " << std::endl;
}
else
{
std::cout << " Failed to connect " << std::endl;
}
};
sock.connect(&connect_ctx); // Connect to specified endpoint asynchronously.
// Server
# include < net/Socket.hpp >
# include < iostream >
int main ()
{
net::native::initialize (); // Initialize Native API
net::socket sock (net::protocol::tcp); // Create new TCP socket
if (!sock. is_open ()) // Validate socket
return - 1 ;
if (!sock. bind ( net::endpoint (net::ip_address::loopback, 8085 ))) // Bind the address `tcp://loopback:8085`
return - 1 ;
if (!sock. listen ()) // Ready to accept
return - 1 ;
while ( true )
{
auto client = sock. accept (); // accept other client. it returns new client socket.
std::cout << " Connected n " ;
}
}
// Client
# include < net/socket.hpp >
# include < iostream >
int main ()
{
net::native::initialize (); // Initialize Native API
net::socket sock (net::protocol::tcp); // Create new TCP socket
if (!sock. is_open ()) // Validate socket
return - 1 ;
if (!sock. connect ( net::endpoint (net::ip_address::loopback, 8085 ))) // Try to connect to server.
return - 1 ;
std::cout << " Connected! " ;
}
// <net/dns.hpp>
net::dns::get_host_name () // get host's name
net::dns::get_host_entry( " www.example.com " ) // get www.example.com's host entry
try {
if (!sock. connect (ENDPOINT))
throw net::network_exception ( " connect() " );
}
catch (std:: exception & e) {
std::cout << e. what () << std::endl; // connect(): Cannot assign requested address. [10049]
}
Système d'exploitation | Bibliothèque |
---|---|
Fenêtres | Winsock2 |
Linux | libérer |
Le référentiel est à chaque fois le bienvenu pour tout problème ou PR !