最近在学习quic协议,由于是初学阶段,对这套代码的具体实现还不太熟悉,记录一下对客户端的逻辑分析
在posix_quic-master/test/client/src 文件夹
先是创建socket套接字
//建立套接字
//typedef int posix_quic::QuicSocket
//也就是说QuicSocket就是int数据类型
QuicSocket socket = QuicCreateSocket();
//在quic_socket.cpp文件中 找到QuicCreateSocket()函数
QuicSocket QuicCreateSocket()
{
//auto是自动类型推断关键字
auto socket = QuicSocketEntry::NewQuicSocketEntry(false);
DebugPrint(dbg_api, "socket fd = %d", socket->Fd());
return socket->Fd();
}
第二步是建立connect()连接
//建立udp连接
res = QuicConnect(socket, (struct sockaddr*)&addr, sizeof(addr)
quic是通过流的方式发送数据 所以创建了quic stream
//创建quic stream
QuicStream stream = QuicCreateStream(fd);//创建stream流
//跟踪QuicCreateStream()函数
QuicStream QuicCreateStream(QuicSocket sock)
{//auto 变量自动类型推断
auto socket = EntryBase::GetFdManager().Get(sock);
if (!socket || socket->Category() != EntryCategory::Socket) {
DebugPrint(dbg_a