Fetch the repository succeeded.
由于平台限制某些机制某些机制会无法正常提供。
己知无法正常提供机制:
1、TCP协议中设置Keep live 时间:TCP_KEEPALIVE
、TCP_KEEPINTVL
和TCP_KEEPCNT
(解决方法)。
2、对平台版本(macOS系统版本)有所要求,必需10.12
之上的版本(包含)。
对平台版本的要求主要是其中组件RWLock.h
中依赖shared_timed_mutex
,而根据_LIBCPP_AVAILABILITY_SHARED_MUTEX
定义对平台版本有所要求(若引入boost进行替代也可解决此问题)。
HP-Socket for macOS版本只是提供与其他平台上相同的回调接口,内部使用其他一些机制与组件替换相应不兼容的组件。
机制:
epoll
=> kqueue
部分Server
从ONESHOT
=>DISPATCH
`DISPATCH`等同与epoll中的`edge-triggered (ET)`,在macOS中`ONESHOT`会从内核中删除,而对于大量数据交换就代表有大量删除与添加,而使用ET(DISPATCH)只会重置状态(ENABLE)使其无效。
组件:
MessagePipe.h
HP-Socket for macOS改自HP-Socket for linux
TcpServer/Client
UdpServer/Client
TcpPackServer/Client
TcpAgent
TcpPackAgent
Pull
HttpClient/Server
ARQ-UdpServer/Client
SSL
目录名 | 描述 |
---|---|
hpsocket | hpsocket网络框架相关的所有文件 |
hpsocket\src | hpsocket的源文件 |
hpsocket\ssl-cert | 测试ssl的相关证书 |
hpsocket\test | 一些简单的测试例子 |
hpsocket\CMakeLists.txt | cmake的配置文件 |
hpsocket\4C | hpsocket框架提供的类C接口 |
提供的例子中请注意依赖头文件与库路径。
CMakeLists.txt
find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)
find_package(unofficial-iconv CONFIG REQUIRED)
add_definitions(-D_NEED_HTTP -D_SSL_SUPPORT -D_NEED_SSL)
4C
接口?将4C文件夹下的文件放置src目录下,删除以下文件
HPSocket.cpp
HPSocket.h
HPSocket-SSL.cpp
HPSocket-SSL.h
并提供了一个官方使用4C接口的http例子test_server_4c
完全支持官方使用示例
通过使用vcpkg, brew或MacPort;例子中使用的是vcpkg管理toolchain, 详细请查看vcpkg包管理器。
-DCMAKE_TOOLCHAIN_FILE=[vcpkg_root_path]/scripts/buildsystems/vcpkg.cmake
具体安装了以下依赖:
openssl、libiconv、zlib
Sign in to post a comment
Repository Comments ( 0 )