>운영 및 유지보수 >리눅스 운영 및 유지 관리 >리눅스에서 얼음이란 무엇입니까?

리눅스에서 얼음이란 무엇입니까?

WBOY
WBOY원래의
2022-03-25 09:24:432941검색

Linux의 ice는 "Internet Communications Engine"의 약자로 인터넷 통신 엔진을 의미합니다. ICE는 애플리케이션 로직 개발에 집중할 수 있으며 모든 기본 네트워크 인터페이스 프로그래밍을 처리하는 데 사용됩니다. 최소한의 노력으로 분산 애플리케이션을 구축할 수 있습니다.

리눅스에서 얼음이란 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux에서 ice란 무엇입니까

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.