c++ poco StreamSocket tcpclient测试用例

简介: 1.代码 #include #include "Poco/Net/Socket.h" #include "Poco/Net/StreamSocket.h" #include "Poco/Net/ServerSocket.

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
  • 1

3.运行截图

这里写图片描述

目录
相关文章
|
6月前
|
IDE 测试技术 开发工具
Poco新增对cocos c++游戏的支持
Poco新增对cocos c++游戏的支持
|
6月前
|
测试技术 程序员 C++
C++单元测试GoogleTest和GoogleMock十分钟快速上手(gtest&gmock)
gtest是Google开源的一个跨平台的(Liunx、Mac OS X、Windows等)的 C++ 单元测试框架,可以帮助程序员测试 C++ 程序的结果预期。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。另一方面,gmock并不是一个独立的测试框架,而是gtest的辅助框架,主要用于模拟没有实现的类的操作,以便在没有完整类的情况下进行测试。通过配合使用gtest和gmock,开发者可以编写出更为复杂且健壮的C++单元测试。
462 0
|
6月前
|
关系型数据库 MySQL 开发工具
windows编译poco c++库
windows编译poco c++库
|
5月前
|
jenkins 测试技术 持续交付
利用C++增强框架的可测试性(Testability)
**C++框架可测试性提升策略**:通过模块化设计、依赖注入、使用Mock对象和Stub、编写清晰接口及文档、断言与异常处理、分离测试代码与生产代码、自动化测试,可以有效增强C++框架的可测试性。这些方法有助于确保代码正确性、健壮性,提高可维护性和可扩展性。示例包括使用类和接口实现模块化,通过构造函数进行依赖注入,以及利用Google Test和Google Mock进行断言和模拟测试。
75 1
|
6月前
|
安全 前端开发 测试技术
《C++ Concurrencyin Action》第10章--多线程程序的测试和调试
《C++ Concurrencyin Action》第10章--多线程程序的测试和调试
|
11月前
|
算法 测试技术 程序员
C++算法:第N位数的原理、源码及测试用例
C++算法:第N位数的原理、源码及测试用例
|
11月前
|
算法 测试技术 C#
C++前缀和算法的应用:从栈中取出 K 个硬币的最大面值和 原理源码测试用例
C++前缀和算法的应用:从栈中取出 K 个硬币的最大面值和 原理源码测试用例
|
11月前
|
机器学习/深度学习 算法 测试技术
C++前缀和算法的应用:用地毯覆盖后的最少白色砖块 原理源码测试用例
C++前缀和算法的应用:用地毯覆盖后的最少白色砖块 原理源码测试用例
|
11月前
|
算法 测试技术 C#
C++前缀和算法的应用:摘水果 原理源码测试用例
C++前缀和算法的应用:摘水果 原理源码测试用例
|
11月前
|
算法 测试技术 C#
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例
C++前缀和算法的应用:分割数组的最多方案数 原理源码测试用例