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.
#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.
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
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)
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 directorysudo yum install openssl-devel
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
(default installed in /opt/Ice-3.7.3)
sudo make install
Test
1 )Write the slice configuration file of icemodule Demo {
interface Printer {
void printString(string s);
};
};
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!