Win+VisualStudio+vcpkg+Zeromq-Installationsmethode

1. Grund

Da ich Zeromq unter Windows zum Senden und Empfangen von Nachrichten bei der Arbeit verwenden muss, habe ich einige Informationen im Internet gesammelt und schließlich das Senden und Empfangen von zmq mithilfe der c libzmq-Bibliothek in Visual Studio 2022 erfolgreich implementiert.

2. Grundlegende Informationen

2.1 Grundlegende Einführung in ZeroMQ

Da ich laut der offiziellen Website von ZeroMQ nicht auf Netzwerke und Kommunikation spezialisiert bin, werde ich nicht auf Details eingehen. Warum Sie ZMQ verwenden sollten, ist allein die Aufgabe des Chefs ...

ZeroMQ (auch ØMQ, 0MQ oder ZMQ geschrieben) ist eine leistungsstarke asynchrone Messaging-Bibliothek, die für den Einsatz in verteilten oder gleichzeitigen Anwendungen gedacht ist. Es stellt eine Nachrichtenwarteschlange bereit, aber im Gegensatz zu nachrichtenorientierter Middleware kann ein ZeroMQ-System ohne einen dedizierten Nachrichtenbroker ausgeführt werden.

ZeroMQ unterstützt gängige Messaging-Muster (Pub/Sub, Anfrage/Antwort, Client/Server und andere) über eine Vielzahl von Transporten (TCP, In-Process, Inter-Process, Multicast, WebSocket und mehr), wodurch das Messaging zwischen Prozessen so einfach wird als Inter-Thread-Messaging. Dadurch bleibt Ihr Code übersichtlich, modular und äußerst einfach skalierbar.

ZeroMQ wird von einer großen Community von Mitwirkenden entwickelt. Es gibt Bindungen von Drittanbietern für viele gängige Programmiersprachen und native Ports für C# und Java.

2.2 Grundlegende Einführung in vcpkg

Laut der offiziellen Website von vcpkg handelt es sich wahrscheinlich um ein Tool zur plattformübergreifenden Installation von Open-Source-Bibliotheken:

vcpkg ist ein plattformübergreifender Paketmanager für C- und C++-Entwickler. Mit vcpkg können Sie schnell Tausende hochwertige Open-Source-Bibliotheken erhalten, um Ihre Anwendung zu stärken und Sammlungen privater Komponenten intern zu teilen.

3. Installation

3.1 Installieren Sie vcpkg

Umweltanforderungen:

  • Windows 7 oder neuer
  • Git
  • Visual Studio 2015 Update 3 oder neuer
#clone vcpkg repo 如果访问github不成功,请自行解决
git clone https://github.com/Microsoft/vcpkg.git

#bootstrap
.\vcpkg\bootstrap-vcpkg.bat #for powershell
.\vcpkg\bootstrap-vcpkg.sh #for cmd

3.2 Installieren Sie libzmq

Geben Sie das vcpkg-Installationsverzeichnis ein und führen Sie den folgenden Befehl aus:

(Zmq-Verpackungsbibliotheken unterscheiden sich in verschiedenen Sprachen. Hier wird die C-Sprachversion der libzmq-Bibliothek ausgewählt.)

#install libzmq
./vcpkg install zeromq:x64-windows #for x64
./vcpkg install zeromq #for x86

3.3 Konfigurieren Sie VisualStudio-Projektdateien

3.3.1 Konfigurationsmethode für Nuget-Pakete

Geben Sie das Visual Studio-Projekt ein und öffnen Sie das Terminal:

vcpkg integrate project #生成项目配置

Einzelheiten zur Projekt-Nuget-Paketkonfigurationsmethode finden Sie unter: Visual Studio 2019 Konfigurieren des C++-Paketverwaltungstools vcpkg

3.3.2 cmake-Konfigurationsmethode

cmake konfiguriert die vcpkg-Methode:

cmake -B [build directory] -S . -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake

#build
cmake --build [build directory]

Schreiben der Datei CMakeLists.txt:

cmake_minimum_required (VERSION 3.8)


add_executable (zmp_server "zmp_server.cpp" "zmp_server.h")


include_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/include")
link_directories("C:/Users/oceanstar/vcpkg/win/vcpkg/installed/x64-windows/lib")



find_package(ZeroMQ CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE libzmq libzmq-static)

4. Testen

Unter Bezugnahme auf das Testprogramm auf der offiziellen Website habe ich das Testprogramm leicht geändert:

  • Server:
//zmq_server.cpp
#include <zmq.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#ifndef _WIN32
#include <unistd.h>
#else
#include <windows.h>
#endif

int main(void)
{
    //  Socket to talk to clients
    void* context = zmq_ctx_new();
    void* responder = zmq_socket(context, ZMQ_REP);
    int rc = zmq_bind(responder, "tcp://*:4396");
    assert(rc == 0);

    while (1) {
        char* buffer = new char[40];
        zmq_recv(responder, buffer, 40, 0);
        printf("%s\n",buffer);
        zmq_send(responder, "World", 5, 0);
    }
    return 0;
}
  • Klient:
     
//zmq_client.cpp
#define _CRT_SECURE_NO_WARNINGS
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#ifndef _WIN32
#include <unistd.h>
#else
#include <windows.h>
#endif



int main(void)
{
    printf("Connecting to hello world server¡­\n");
    void* context = zmq_ctx_new();
    void* requester = zmq_socket(context, ZMQ_REQ);
    zmq_connect(requester, "tcp://localhost:4396");

    int request_nbr;
    for (request_nbr = 0; request_nbr != 10; request_nbr++) {
        char buffer[10];
        char* TLresult = new char[40];
        strcpy(TLresult, "Received from client!");
        //printf("%s\n", TLresult);
        zmq_send(requester, TLresult , 40, 0);
        zmq_recv(requester, buffer, 10, 0);
    }
    zmq_close(requester);
    zmq_ctx_destroy(context);
    return 0;
}
  • Starten Sie Server und Client gleichzeitig, und der Server kann die vom Client gesendete Zeichenfolge empfangen, dh die Konfiguration ist erfolgreich:

 Da die Informationen im Internet relativ chaotisch sind und das Verständnis des Autors von VS begrenzt ist, ist der Text im Allgemeinen grob. Wenn es Fehler oder Auslassungen gibt, weisen Sie bitte darauf hin.

Referenz:

Supongo que te gusta

Origin blog.csdn.net/Roy_Yuan_/article/details/130100359
Recomendado
Clasificación