本文整理汇总了C++中TCPSocket::onReceive方法的典型用法代码示例。如果您正苦于以下问题:C++ TCPSocket::onReceive方法的具体用法?C++ TCPSocket::onReceive怎么用?C++ TCPSocket::onReceive使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TCPSocket
的用法示例。
在下文中一共展示了TCPSocket::onReceive方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: request
void Client::request(
Method method, Uri uri,
Header header,
void *data, int len){
TCPSocket *socket = new TCPSocket(
uri.getDomain().c_str(), uri.getPort(),
[=](int err, TCPSocket *socket){
if( err != eNoError ){
EP_SAFE_DEFER( responseCallback, err, Header(),"" );
}
else{
string *buffer = new string();
socket->onReceive(
[=](void *data, int len){
buffer->append( (char*)data );
});
socket->onUnbind(
[=](){
Header header;
string body;
int offset = header.load( *buffer );
/*
todo : parse chunked content-length
*/
header.getField(
"Transfer-Encoding");
if( offset == - 1 ){
EP_SAFE_DEFER( responseCallback, eParseError, Header(),"" );
}
else{
body = buffer->substr( offset );
EP_SAFE_DEFER( responseCallback, eNoError, header, body );
}
delete buffer;
});
string requestLine =
generateRequestLine( method, uri.getRequestUri(), "HTTP/1.1" );
string headerString =
header.dump();
socket->write(
(void*)requestLine.c_str(), requestLine.size());
socket->write(
(void*)headerString.c_str(), headerString.size());
if( len > 0 ){
socket->write( data, len );
}
}
});
}