
quic
奥斯特洛夫斯勇
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QUIC代理客户端代码阅读
1、首先是从配置问价中读取配置信息,读取配置文件的代码如下,可留着备用//从配置文件中读取数据 配置文件所在的位置 /src/client_config.iniDEFINE_QUIC_COMMAND_LINE_FLAG(std::string, client_ini_file, "client_config.ini", "原创 2021-01-12 15:20:47 · 673 阅读 · 0 评论 -
QUIC项目epoll服务器分析
在前面的分析的过程中,我们发现epoll服务器已经注册了两个事件:这是proxy_server_bin.cc的代码1、eps_->RegisterFD(fd, this, kEpollFlags);2、 epoll_server_.RegisterFD(fd_, this, kEpollFlags);注册完毕之后,就剩下等待事件发生eps.WaitForEventsAndExecuteCallbacks();查看这个函数:void SimpleEpollServer::WaitFo原创 2021-01-11 19:41:59 · 572 阅读 · 0 评论 -
QUIC学习记录
QUIC学习记录QUIC代理代码阅读:proxy_server_bin.cc1、创建一个backend 智能指针,并实例化一个ProxyServerBackend()对象 std::unique_ptr<quic::ProxyServerBackend> backend (new ProxyServerBackend());//创建一个智能指针呢backend,指向ProxyServerBackend()实例查看这个ProxyServerBackendclass ProxySe原创 2021-01-11 14:25:35 · 581 阅读 · 1 评论 -
posix_quic-master代码中test部分的试运行
前期一直在分析client端与server端的逻辑以及其中的一些函数,这里我们尝试着运行一下这里的代码首先,运行这套代码需要用到go语言,所以我们需要搭建一个go环境.(也是直接开始运行的时候,发现报错,提示要安装go)于是我把自己搭建go环境的过程记录了下来添加链接描述然后我们开始运行代码cd posix_quic-master//建立一个build文件夹mkdir buildcd...原创 2019-06-04 15:10:20 · 507 阅读 · 1 评论 -
使用posix_quic-master传输文件
首先修改原函数的客户端#include "quic_socket.h"#include "debug.h"#include <string.h>#include <stdio.h>#include <string>#include <sys/epoll.h>#include <sys/poll.h>#include <...原创 2019-06-10 09:20:37 · 722 阅读 · 3 评论 -
posix_quic-master socket关闭函数以及流关闭
//关闭quicsocketQuicCloseSocket(conn);//跟踪这个函数int QuicCloseSocket(QuicSocket sock){ EntryPtr entry = EntryBase::GetFdManager().Get(sock); if (!entry || entry->Category() != EntryCategory...原创 2019-06-03 11:27:34 · 453 阅读 · 0 评论 -
posix_quic-master接受收据
读数据res = QuicRead(fd, buf, sizeof(buf));//读事件跟踪一下这个QuicRead()函数ssize_t QuicRead(QuicStream stream, void* data, size_t length){ struct iovec iov; iov.iov_base = data; iov.iov_len = len...原创 2019-06-03 11:17:59 · 237 阅读 · 0 评论 -
posix_quic-master写数据函数
写数据 res = QuicWrite(stream, s.c_str(), s.size(), false);跟进这个QuicWrite()函数//传入stream,数据 数据的长度 一个bool类型的参数 fin 是否终止ssize_t QuicWrite(QuicStream stream, const void* data, size_t length, bool fin){...原创 2019-06-03 10:59:11 · 372 阅读 · 0 评论 -
posix_qui-master 服务器端QuicAccept()函数
QuicSocketAccept函数 返回一个套接字QuicSocket newSocket = QuicSocketAccept(fd);跟踪这个函数QuicSocket QuicSocketAccept(QuicSocket listenSock){//判断传入的值 auto socket = EntryBase::GetFdManager().Get(listenSo...原创 2019-06-01 20:18:07 · 365 阅读 · 0 评论 -
posix_quic-master 客户端逻辑分析
最近在学习quic协议,由于是初学阶段,对这套代码的具体实现还不太熟悉,记录一下对客户端的逻辑分析在posix_quic-master/test/client/src 文件夹下我们知道quic协议是基于udp协议,逻辑上这两个协议有很多相似之处我们可以观察到udp socket 客户端的实现逻辑,先是创建socket套接字//建立udp套接字//typedef int posix_qu...原创 2019-05-29 17:26:17 · 695 阅读 · 0 评论 -
posix_quic-master 客户端连接函数 QuicConnect()
建立连接//根据socket套接字 网络地址来建立连接 res = QuicConnect(socket, (struct sockaddr*)&addr, sizeof(addr)); ```跟进这个函数```int QuicConnect(QuicSocket sock, const struct sockaddr* addr, socklen_t addrle...原创 2019-06-01 17:06:36 · 497 阅读 · 0 评论 -
posix_quic-master 创建stream
这里主要介绍quic stream的创建QuicStream stream = QuicCreateStream(fd);//创建stream流跟进这个QuicCreateStream()函数QuicStream QuicCreateStream(QuicSocket sock){//先判断传入的套接字 auto socket = EntryBase::GetFdManager...原创 2019-05-31 16:21:02 · 369 阅读 · 0 评论 -
posix_quic-master 服务器端bind()函数
在套接口中,一个套接字只是用户程序与内核交互信息的枢纽,它自身没有太多的信息,也没有网络协议地址和 端口号等信息,在进行网络通信的时候,必须把一个套接字与一个地址相关联,这个过程就是地址绑定的过程。许多时候内核会我们自动绑定一个地址,然而有时用 户可能需要自己来完成这个绑定的过程,以满足实际应用的需要,最典型的情况是一个服务器进程需要绑定一个众所周知的地址或端口以等待客户来连接。这个事由 bind...原创 2019-05-31 15:39:50 · 311 阅读 · 0 评论 -
posix_quic-master socket函数分析
socket函数为了执行网络IO,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型(比如使用IPv4的TCP、使用IPv6的UDP、Unix域字节流协议)和套接字字类型(字节流、数据报或原始套接字)。#include <sys/socket.h>int socket(int family, int type, int protocol); // 成功返回非...原创 2019-05-31 14:55:30 · 682 阅读 · 0 评论 -
posix_quic-master server端逻辑分析
第一步,创建socket套接字QuicSocket socket = QuicCreateSocket();后面是初始化地址 同tcp,udp socket相类似struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(9700); addr.sin_addr.s_addr ...原创 2019-05-30 10:36:52 · 365 阅读 · 0 评论