c++ poco StreamSocket tcpclient测试用例
2017-04-30 21:55
555 查看
1.代码
#include <iostream> #include "Poco/Net/Socket.h" #include "Poco/Net/StreamSocket.h" #include "Poco/Net/ServerSocket.h" #include "Poco/Net/SocketAddress.h" #include "Poco/Net/NetException.h" #include "Poco/Timespan.h" using Poco::Net::Socket; using Poco::Net::StreamSocket; using Poco::Net::SocketAddress; using Poco::Net::NetException; using Poco::Net::ConnectionRefusedException; using Poco::Net::InvalidSocketException; using Poco::Timespan; using Poco::TimeoutException; using Poco::IOException; const int RECV_BUF_SIZE = 64*1024; const int SEND_BUF_SIZE = 64*1024; int main(int argc,char * argv[]) { int n=0; char buffer[1024]={"\0"}; SocketAddress sa("127.0.0.1",5000); StreamSocket ss; Timespan timeout(2000000); try { ss.connect(sa,timeout); } catch (ConnectionRefusedException&) { std::cout<<"connect refuse"<<std::endl; } catch (NetException&) { std::cout<<"net exception"<<std::endl; } catch (TimeoutException&) { std::cout<<"connect time out"<<std::endl; } //setopt timeout Timespan timeout3(5000000); ss.setReceiveTimeout(timeout3); //retn void Timespan timeout4(5000000); ss.setSendTimeout(timeout4); //retn void Timespan timeout0 = ss.getReceiveTimeout(); Timespan timeout1 = ss.getSendTimeout(); std::cout<<"Recv Timeout : "<<timeout0.totalMicroseconds()<<std::endl; std::cout<<"Send Timeout : "<<timeout1.totalMicroseconds()<<std::endl; //setopt bufsize ss.setReceiveBufferSize(RECV_BUF_SIZE); //retn void ss.setSendBufferSize(SEND_BUF_SIZE); //retn void int recv_len=ss.getReceiveBufferSize(); int send_len=ss.getSendBufferSize(); std::cout<<"recv buf size : "<<recv_len<<std::endl; std::cout<<"send buf size : "<<send_len<<std::endl; //setopt nodelay ss.setNoDelay(true); //retn void try { n = ss.sendBytes("hello", 5); //block std::cout<<"write length : "<<n<<std::endl; } catch (TimeoutException&) { std::cout<<"send time out"<<std::endl; } catch (InvalidSocketException&) { std::cout<<"invalid socket exception"<<std::endl; } catch (IOException&) { std::cout<<"write io exception"<<std::endl; } while(1) { try { if(ss.available()) { n=0; memset(buffer,0,sizeof(buffer)); n = ss.receiveBytes(buffer,sizeof(buffer)); //block std::cout<<"recv length : "<<n<<","<<"value : "<<buffer<<std::endl; } } catch (TimeoutException&) { std::cout<<"recv time out"<<std::endl; } catch (InvalidSocketException&) { std::cout<<"invalid socket exception"<<std::endl; } } //Socket::poll有select poll epoll 三种模式,编译Poco库时确定。 /* Timespan timer(2000000); Socket::SocketList readList; Socket::SocketList writeList; Socket::SocketList exceptList; readList.push_back(ss); while(1) { if(ss.poll(timer, Socket::SELECT_READ)) { std::cout<<"he number of bytes available that can be read : "<<ss.available()<<std::endl; memset(buffer,'\0',sizeof(buffer)); n = ss.receiveBytes(buffer,ss.available()); std::cout<<"recv length : "<<n<<","<<"value : "<<buffer<<std::endl; } } */ ss.close(); return 0; }
2.编译指令
g++ myStreamSocket.cpp -o mysocket -lPocoNet -lPocoFoundation
3.运行截图
相关文章推荐
- c++ poco StreamSocket tcpclient测试用例
- c++ poco Connector tcpclient测试用例
- 性能测试 - Locust TCP socket client
- c++ poco StreamSocket 源码剖析
- [Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架
- c++ poco Event测试用例
- [Socket]基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发
- 代码客:G-Socket(IOCP) 1.0(Server/Client)例程源码+Server体验程序+强大的压力测试工具
- C++性能测试用例
- socket与TcpListener/TcpClient/UdpClient 的区别及联系
- 稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTcpBinding的支持, 在Socket通信中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp
- 稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTcpBinding的支持, 在Socket通信中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp
- 跨平台C++ 功能全面的Socket类库,支持TCP,UDP,限速等等
- 稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTcpBinding的支持, 在Socket通信中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp
- socket与TcpListenerTcpClientUdpClient 的区别及联系
- 3个学习Socket编程的简单例子:TCP Server/Client, Select
- 稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTcpBinding的支持, 在Socket通信中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp
- socket与TcpListener/TcpClient/UdpClient 的区别及联系
- 基于C++的纯面向对象的通用高性能大并发TCP-SERVER/CLIENT开发框架实践系列之前言篇
- 使用TcpListener的AcceptSocket()方法和AcceptTcpClient()方法接受远端数据时,程序总是好像死机一样!请问如何解决?