GitHub 페이지에서 문서를 찾으십시오
libsocket과 libsocket ++를 모두 설치하려면이 명령을 사용하시기 만하면됩니다.
$ mkdir build && cd build
$ cmake ..
$ make # or make install
SOS LibSocket.so 및 LibSocket ++를 설치하여/usr/lib/및 헤더 파일을/usr/include/libsocket에 설치합니다. 프로젝트 루트의 cmakelists.txt 파일에서 이러한 경로를 변경할 수 있습니다.
Sunos에서 변경된 라이브러리 이름을 주목하십시오. 여기서 Libsocket_hl ( "High Level").
CMAKE는 객체 라이브러리를 지원하기 위해 필요합니다. 이는 2.8보다 높은 버전의 경우입니다.
Libsocket은 C 부품이 있고 C ++ 부품이 소켓을 쉽고 깨끗하게 만드는 라이브러리입니다.
C 부품 사용 :
libsocket.so 에 대한 링크C ++ 부품 사용 :
libsocket++.so 에 대한 링크doc/libsocket++/classes.svg ) 복제 감소.<< , >> ) 연산자, std::string 객체 및보다 많은 STL 사용을 수락하는 기능)이므로 다른 응용 프로그램 또는 라이브러리에서 우수한 통합.socket 베이스 클래스의 복사 생성자가 삭제됩니다. 이를 통해 소켓이 보이는 범위를 떠날 때 소켓을 안전하게 닫을 수 있습니다. 일부 기능은 내부적으로 고유 unique_ptr s를 사용하여 안전한 거래를 가능하게합니다. Libsocket 라이브러리에는 다음과 같은 기능이 있습니다.
select(2) 및 epoll(7) (C ++)의 추상화 클래스errno , gai_strerror() 등 사용) 및 C ++ 예외.Libsocket의 주요 장점 중 하나는 소켓을 연결하기위한 복잡하고 오류가 발생하기 쉬운 절차를 작성하거나 오류 등을 확인하는 것입니다. 네트워크 프로그램이 더 짧아지고 읽기 쉬워집니다.
Libsocket은 중요한 소켓 유형을 지원합니다 : INET/INET6을 사용하여 TCP 및 UDP; 및 UNIX DGRAM/스트림.
소켓으로 작업하는 거의 모든 기능은 Libsocket에 의해 래핑됩니다.
Libsocket은 "독점적"소켓 형식 (Libc가 FILE 유형과 마찬가지로)을 사용하지 않도록 설계되어 Libsocket에서 제공하는 기능 이외의 기능으로 원시 파일 디스크립터에서 작동 할 수 있습니다.
플랫폼이 지원되지 않는지 또는 LibSocket을 새로운 플랫폼으로 포트로 만들었는지 알려주십시오.
Libsocket은 최신 Linux 시스템에서 가장 잘 작동합니다 (죄송합니다!). G ++ 또는 Clang ++와 같은 C ++ 11 컴파일러가 필요합니다. 플래그 -DCMAKE_CXX_COMPILER=<compiler> 또는 -DCMAKE_C_COMPILER=<compiler> 사용하여 기본 컴파일러를 대체하십시오.
Linux 시스템 이외의 Libsocket은 C ++ 11 스택이 작동하는 FreeBSD 시스템에서 (실제로 철저히 테스트되지는 않았지만) 작동하는 것으로 알려져 있습니다. 라이브러리는 배송 된 컴파일러 (Clang 3.3)를 사용하여 FreeBSD 10.0-RC4 AMD64 시스템에서 테스트되었습니다.
C로 작성된 라이브러리 부분은 OpenIndiana에서도 (부분적으로); 이것은 SunOS openindiana 5.11 oi_151a8 사용하여 확인되었습니다.
테스트 당시 최신 C ++ 컴파일러를 사용할 수 없었기 때문에 C ++ 라이브러리 부분은 Sunos 시스템을 기반으로하지 않습니다.
또 다른 장애물은 Solaris가 이미 표준 소켓 기능을 포함하는 libsocket 배송한다는 것입니다. 따라서 C 라이브러리는 Sunos의 Libsocket_hl로 이름이 바뀌 었습니다. -lsocket 아닌 플래그 -lsocket_hl 사용하여 프로그램을 연결해야합니다.
examples/echo_dgram_server.c )는 소켓 생성을 거부합니다. 오류는 "전송 엔드 포인트에서는 작동하지 않는 작업"입니다.examples/transmission_server.c )도 소켓을 만들려고 할 때 실패합니다. 여기에서 표시되는 오류는 "잘못된 인수"입니다. Sunos에 대한 약간의 조사와 지식으로 이러한 문제를 해결할 수 있다고 확신합니다.LibSocket은 Linux와 FreeBSD/OpenIndiana-Sunos 사이의 비 호환성이 있기 때문에 OpenBSD에서는 아직 작동하지 않습니다.
다른 플랫폼에서 Libsocket을 성공적으로 사용하는 경우 (또는 포트 된 경우) 알려주십시오.
libsocket을 프로그램에 정적으로 연결할 수 있습니다 (.c [pp] 및 .h [pp] 파일을 소스 트리에 배치하거나 .a 파일에 링크 함). Libsocket은 제품에 라이센스 텍스트를 포함하는 한 약간의 수정 된 2- 클라스 BSD 라이센스로 라이센스를 부여받을 필요가 없습니다 (따라서 Libsocket 이이 라이센스에 의해 라이센스가 라이센스가 있음)와 LibSocket (라이센스에 설명 된대로)을 작성한 통지. 어쨌든 제품의 readme 또는 광고에 libsocket을 언급해도 괜찮습니다.
cmake 구성 옵션 BUILD_STATIC_LIBS=ON 설정하여 링크를위한 정적 라이브러리를 생성 할 수 있습니다. 이것은 명령 줄이나 cmakelists.txt에서 수행 할 수 있습니다.
SET (BUILD_STATIC_LIBS ON ) add_subdirectory(libsocket)
target_link_libraries (MyProject libsocket_int) # C linking
target_link_libraries (MyProject libsocket++_int) # C++ linking
정적 라이브러리의 Cmake 대상은 <libname> _int이지만 생성 된 라이브러리에는 예상 Libsocket (++)이 있습니다. 디스크의 이름이 있습니다.
libsocket을 사용하는 권장 방법은 프로그램을 Libsocket SO (DLL)와 연결하는 것입니다. 이 방법을 사용하는 것은 매우 쉽습니다. MakeFile ( "Building"섹션 참조)을 사용하여 동적 라이브러리 (Libsocket 및 Libsocket ++)를 컴파일해야합니다.
프로그램을 라이브러리에 연결하는 것도 간단합니다. $ 객체가 객체 파일이면 다음 명령 중 하나를 사용하여 함께 연결하십시오.
$ gcc -o yourprog -lsocket $OBJECTS
# or for C++
$ g++ -o yourprog -lsocket++ $OBJECTS
libsocket ++가 이미 libsocket과 연결되어 있기 때문에 C ++를 사용하는 경우에도 하나의 라이브러리에만 연결하면됩니다.
이진 형식으로 프로그램을 배포하면 프로그램과 함께 라이브러리 바이너리를 배포하고 프로그램을 따라 설치할 수 있습니다.
예제/ 및 예제 ++의 표준 libsocket 분포에 제공된 예제를 사용하여 LibSocket을 테스트하고 경험을 할 수 있습니다. 더 자세한 설명은 소스 파일에서 찾을 수 있습니다. 예제 모음에는 다음과 같습니다.
(기음)
http.c : 간단한 HTTP 클라이언트echo_dgram_server.c , echo_dgram_client.c , echo_dgram_connect_client.c : 연결된 모드 및 연결 모드 모두에서 UDP 소켓을 사용하는 방법을 보여줍니다.unix_stream_client.c , unix_stream_server.c : Echo 서버/클라이언트로서 Unix 스트림 소켓을 시연unix_dgram_client.c , unix_dgram_server.c : 단순한 서버/클라이언트 전송 텍스트로 Unix dgram 소켓을 시연합니다.multicast-listen.c : 멀티 캐스트 네트워킹에 LibinetSocket을 사용하는 방법을 보여줍니다. gcc -o <outfile> -lsocket <example-name> 으로 빌드하십시오.
(C ++)
http.cpp , http_2.cpp : 약간 다른 접근법을 사용하는 두 개의 간단한 HTTP 클라이언트server.cpp , client.cpp : TCP 클라이언트 및 서버unix_client_dgram.cpp : unix dgram sockets를 사용하여 syslog에 메시지를 씁니다.echo_server.cpp, echo_client_conn.cpp, echo_client_sndto.cpp : udp client/server (두 개의 클라이언트 : 하나는 sendto ()를 사용하고 다른 하나는 연결된 데이터 그램 소켓을 사용하고 있습니다)unix_client_stream.cpp, unix_server_stream.cpp : Unix 스트림 소켓을 사용하는 클라이언트/서버. [clan]g++ -std=c++11 -lsocket++ -o <outfile> <example-name> 로 빌드하십시오.
코드의 길이를 살펴 봐야합니다. http.c 는 24 개의 SLOC (소스 라인)-매우 유사한 클라이언트 Simple-http (https://github.com/dermesser/simple-http-client)가 거의 70 줄의 코드를 사용합니다.