Home  >  Article  >  Operation and Maintenance  >  What is ice under linux

What is ice under linux

WBOY
WBOYOriginal
2022-03-25 09:24:432893browse

ice under Linux is the abbreviation of "Internet Communications Engine", which means Internet communication engine. It is an object-oriented middleware; ICE can focus on the development of application logic and is used to handle all underlying networks. Interface programming allows you to build distributed applications with minimal effort.

What is ice under linux

#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.

What is ice under Linux

ICE is ZEROC’s open source communication protocol product. Its full name is: The Internet Communications Engine, which is translated into Chinese as the Internet Communication Engine and is an object-oriented middleware. software that enables us to build distributed applications with minimal effort.

ICE allows us to focus on the development of application logic, which handles all underlying network interface programming, so that we do not have to consider such details: opening network connections, serialization and deserialization of network data transmission , the number of failed connection attempts, etc.

Example installation process of ice under linux:

##Download the installation source

cd /etc/yum.repos.d
sudo wget https://zeroc.com/download/Ice/3.7/el7/zeroc-ice3.7.repo

Ice required libraries

    ##bzip2 1.0
  • ##expat 2.1 or later
  • LMDB 0.9 (LMDB is not required with the C 11 mapping)
  • ##mcpp 2.7.2 with patches

  • OpenSSL 1.0.0 or later (on AIX and Linux)

  • Install lmdb-devel mcpp-devel
  • (Other library systems may come with it, you can not install it first and wait for make to report an error Reinstall)
sudo yum install lmdb-devel mcpp-devel

Download Ice source code ice-3.7.3.tar.gz, unzip

cd /home/user/
tar -zxf ice-3.7.3.tar.gz
cd ice-3.7.3/cpp

Compile(Default C 98, available Set CXXFLAGS to c 11)

sudo make -j4
sudo make CXXFLAGS=-std=c++11 -j4

src/Ice/SHA1.cpp:14:31: Fatal error: openssl/sha.h: No such file or directory

sudo yum install openssl-devel
src/Ice /ConnectionI.cpp:27:21: Fatal error: bzlib.h: No such file or directory

sudo yum install bzip2-devel

src/IceXML/Parser.cpp:7:19: Fatal error: expat.h: No such file Or directory

sudo yum install expat-devel

Installation

(default installed in /opt/Ice-3.7.3)

sudo make install

Test

1 )Write the slice configuration file of ice

module Demo {
    interface Printer {
        void printString(string s);
    };
};
2) Compile the Slice definition file (generate Printer.h and Printer.cpp) cannot find slice2cpp, configure the running environment by yourself in /opt/Ice-3.7.3/bin Medium

slice2cpp Printer.ice

3) Write the server and name it Server.cpp

#include <Ice/Ice.h>
#include <Printer.h>
 
using namespace std;
using namespace Demo;
 
class PrinterI : public Printer {
    public:
        virtual void printString(const string& s, const Ice::Current&);
};
 
void 
PrinterI::printString(const string& s, const Ice::Current&)
{
    cout << s << endl;
}
 
int main(int argc, char* argv[])
{
    int status = 0;
    Ice::CommunicatorPtr ic;
    try {
        ic = Ice::initialize(argc, argv);
        Ice::ObjectAdapterPtr adapter =
            ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000");
        Ice::ObjectPtr object = new PrinterI;
        adapter->add(object, ic->stringToIdentity("SimplePrinter"));
        adapter->activate();
        ic->waitForShutdown();
    } catch (const Ice::Exception& e) {
        cerr << e << endl;
        status = 1;
    } catch (const char* msg) {
        cerr << msg << endl;
        status = 1;
    }
    if (ic) {
        try {
            ic->destroy();
        } catch (const Ice::Exception& e) {
            cerr << e << endl;
            status = 1;
        }
    }
    return status;
}

4) Compile the server

c++ -I. -I/opt/Ice-3.7.3/include -c Printer.cpp Server.cpp
c++ -o server Printer.o Server.o -L/opt/Ice-3.7.3/lib64 -lIce -lpthread

5) Write the client and name it Client.cpp

#include <Ice/Ice.h>
#include <Printer.h>
 
using namespace std;
using namespace Demo;
 
int main(int argc, char* argv[])
{
    int status = 0;
    Ice::CommunicatorPtr ic;
    try {
        ic = Ice::initialize(argc, argv);
        Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");
        PrinterPrx printer = PrinterPrx::checkedCast(base);
        if (!printer)
            throw "Invalid proxy";
 
        printer->printString("Hello World!");
    } catch (const Ice::Exception& ex) {
        cerr << ex << endl;
        status = 1;
    } catch (const char* msg) {
        cerr << msg << endl;
        status = 1;
    }
    if (ic)
        ic->destroy();
    return status;
}

6) Compile the client

c++ -I. -I/opt/Ice-3.7.3/include -c Printer.cpp Client.cpp
c++ -o client Printer.o Client.o -L/opt/Ice-3.7.3/lib64 -lIce -lpthread

7) Run Server, then run Client, if you see the output Hello World! then success.

Related recommendations: "

Linux Video Tutorial

"

The above is the detailed content of What is ice under linux. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn