环境准备
rust 1.70+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envsource $HOME/.cargo/env
rustc --version
git 2.0+
sudo apt-get update
sudo apt-get install git
git --version
gcc 9.3+
sudo apt update
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9 g++-9
gcc-9 --version
g++-9 --version
cmake 3.22+
sudo apt update
sudo apt install software-properties-common lsb-release
sudo apt update
sudo apt install cmake
cmake --version
Linux中安装
git clone https://github.com/tencent/tquic --recursive
cd tquic
cargo build --release --all
如果遇到
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
fatal: 无法克隆 ‘https://github.com/google/boringssl.git’ 到子模组路径 ‘/home/xilaile/tquic/deps/boringssl’
克隆 ‘deps/boringssl’ 失败
# 删除上次下载文件后,运行下面命令,然后重新执行上述步骤
git config --global http.postBuffer 524288000
提示:参数–release指定cargo编译优化版本,编译结果位于./target/release/ 目录,而不是默认的./target/debug/目录。 参数–all指定cargo编译TQUIC协议库及示例工具
如果要启用C语言接口,请在cargo build命令后添加参数-F ffi:
cargo build --release -F ffi
运行测试用例
执行如下命令来运行单元测试:
cargo test
如何使用客户端和服务器端
服务器端
cd ~/tquic/target/release
服务端监听地址是127.0.0.1:8443,作为HTTP/3文件服务器。
测试证书cert.crt和私钥cert.key可以在目录./src/tls/testdata/中找到。也可以直接使用如下命令生成:
openssl genpkey -algorithm RSA -out cert.key -pkeyopt rsa_keygen_bits:2048
openssl req -new -key cert.key -out cert.csr -subj "/C=CN/ST=beijing/L=beijing/O=tquic/CN=example.org"
openssl x509 -req -in cert.csr -signkey cert.key -out cert.crt
./tquic_server -c cert.crt -k cert.key -l 127.0.0.1:8443
你可以尝试不同的选项,使用-h参数查看帮助信息。
./tquic_server -h
客户端
./tquic_client --connect-to 127.0.0.1:8443 https://example.org
可以使用-h选项查看帮助信息:
./tquic_client -h
参考资料
https://tquic.net/zh/docs/getting_started/installation