Linux의 ice는 "Internet Communications Engine"의 약자로 인터넷 통신 엔진을 의미합니다. ICE는 애플리케이션 로직 개발에 집중할 수 있으며 모든 기본 네트워크 인터페이스 프로그래밍을 처리하는 데 사용됩니다. 최소한의 노력으로 분산 애플리케이션을 구축할 수 있습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
ICE는 ZEROC의 오픈 소스 통신 프로토콜 제품입니다. 정식 명칭은 Internet Communications Engine입니다. 중국어로 번역하면 Internet Communication Engine입니다. 비용을 들여 가장 작은 빌드 분산 애플리케이션을 사용하세요.
ICE를 사용하면 모든 기본 네트워크 인터페이스 프로그래밍을 처리하는 애플리케이션 로직 개발에 집중할 수 있으므로 네트워크 연결 열기, 네트워크 데이터 전송의 직렬화 및 역직렬화, 연결 실패 등의 세부 사항을 고려할 필요가 없습니다. 등.
Linux에서 ice 설치 프로세스 예:
설치 소스 다운로드
cd /etc/yum.repos.d sudo wget https://zeroc.com/download/Ice/3.7/el7/zeroc-ice3.7.repo
Ice 필수 라이브러리
bzip2 1.0
국외 거주자 2.1 이상
LMDB 0.9(C++11 매핑에는 LMDB가 필요하지 않음)
mcpp 패치가 포함된 2.7.2
OpenSSL 1.0.0 이상(AIX 및 Linux에서)
lmdb-devel mcpp 설치 -devel(다른 라이브러리 시스템에는 자체 라이브러리 시스템이 있을 수 있으므로 먼저 설치할 수 없습니다. make가 오류를 보고할 때까지 기다린 다음 설치하십시오.)
sudo yum install lmdb-devel mcpp-devel
Ice 소스 코드 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(기본 C++98, CXXFLAGS를 c++11로 설정할 수 있음)
sudo make -j4 sudo make CXXFLAGS=-std=c++11 -j4
src/Ice/SHA1.cpp:14:31: 치명적인 오류: openssl/sha.h: 아니요 해당 파일 또는 디렉터리
sudo yum install openssl-devel
src/Ice /ConnectionI.cpp:27:21: 치명적인 오류: bzlib.h: 해당 파일 또는 디렉터리 없음
sudo yum install bzip2-devel
src/IceXML/Parser.cpp:7:19: 치명적인 오류: expat .h: 해당 파일이나 디렉터리 없음
sudo yum install expat-devel
Installation (기본적으로 /opt/Ice-3.7.3에 설치됨)
sudo make install
Testing
1) ice
module Demo { interface Printer { void printString(string s); }; };
의 슬라이스 구성 파일 작성 2) 컴파일 슬라이스 정의 파일(Printer.h 및 Printer.cpp 생성)이 Slice2cpp를 찾을 수 없습니다. /opt/Ice-3.7.3/bin
slice2cpp Printer.ice
3에서 실행 환경을 직접 구성하십시오. 3) 서버를 작성하고 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) 서버를 컴파일
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) 클라이언트를 작성하고 이름을 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) 클라이언트를 컴파일
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) 서버를 실행한 후 클라이언트를 실행하면 Hello World! 그럼 성공.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 리눅스에서 얼음이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!