首先修改原函数的客户端
#include "quic_socket.h"
#include "debug.h"
#include <string.h>
#include <stdio.h>
#include <string>
#include <sys/epoll.h>
#include <sys/poll.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <assert.h>
using namespace posix_quic;
#define CHECK_RES(res, api) \
do {\
if (res < 0) {\
perror(api " error");\
return 1;\
}\
} while (0)
bool gIsTestReset = false;
bool gIsTestSocketReset = false;
bool gIsTestSocketResetWithStream = false;
QuicSocket conn = -1;
void onStreamClose() {
if (gIsTestSocketReset) {
QuicCloseSocket(conn);
}
}
int doLoop(QuicEpoller ep) {
struct epoll_event evs[1024];//
//收集epoll事件中已经发送的事件
int n = QuicEpollWait(ep, evs, sizeof(evs)/sizeof(struct epoll_event), 6000);
//检查n的返回值
CHECK_RES(n, "epoll_wait");
int res;
for (int i = 0; i < n; i++) {
struct epoll_event & ev = evs[i];
int fd = ev.data.fd;
EntryCategory category = GetCategory(fd);//判断监听事件种类
UserLog("QuicEpoller trigger: fd = %d, category = %s, events = %s",
fd, EntryCategory2Str((int)category), EpollEvent2Str(ev.events));
if (ev.events & EPOLLOUT) {
// connected
UserLog("Connected.\n");
if (category == EntryCategory::Socket) {
QuicStream stream = QuicCreateStream(fd);//创建stream流
assert(stream > 0);
struct epoll_event ev;
ev.data.fd = stream;
ev.events = EPOLLIN;
//将stream加入到ep中去
res = QuicEpollCtl(ep, EPOLL_CTL_ADD, stream, &ev);
CHECK_RES(res, "epoll_ctl");
//将hello quic这几个字符串写入到sstream流中去
// std::string s = "Hello quic!";
char r_file[]="/home/IPcom/Downloads/posix_quic-master/test/client/test.txt";
FILE *r_ptr=NULL;
r_ptr= fopen(r_file,"rb");
if(r_ptr == NULL)
{
printf("error");
return 0;
}
char buffer[1024];
int length=0;
while(!feof(r_ptr))
{
l