【发布时间】:2018-08-08 12:54:34
【问题描述】:
我正在尝试使用非阻塞套接字和 epoll 编写反向代理。起初这似乎没问题,但是当我试图打开一个大的 jpg 文件时,我卡住了。 当我有时尝试写入客户端时,它可能无法写入,我该如何正确处理。
补充说明:
this->getFd() = ProxyFd
this->clientHandler->getFd = clientFd
我正在使用EPOLLET 标记代理和客户端
if( (flag & EPOLLIN) ){
char buffer[1025] = {'\0'};
int readSize;
while( (readSize = read(this->getFd(),buffer,1024)) > 0){
this->headerParse(buffer);
this->readSize += readSize;
int check = 0;
do{
check = write(this->clientHandler->getFd(),buffer,readSize);
}while(check < 0);
}
if(this->headerEnd == 1 && this->readSize >= this->headerLenght ){
close(this->clientHandler->getFd());
close(this->getFd());
delete this->clientHandler;
delete this;
}
}
感谢您花时间阅读。
【问题讨论】:
标签: c++ c sockets reverse-proxy epoll