What is ice under linux

WBOY
Release: 2022-03-25 09:31:27
Original
2840 people have browsed it

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
Copy after login

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
Copy after login

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
Copy after login

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

sudo make -j4
sudo make CXXFLAGS=-std=c++11 -j4
Copy after login

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

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

sudo yum install bzip2-devel
Copy after login

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

sudo yum install expat-devel
Copy after login

Installation

(default installed in /opt/Ice-3.7.3)

sudo make install
Copy after login

Test

1 )Write the slice configuration file of ice

module Demo {
    interface Printer {
        void printString(string s);
    };
};
Copy after login
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
Copy after login

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;
}
Copy after login

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
Copy after login

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;
}
Copy after login

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
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!