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.运行截图

c++ poco StreamSocket tcpclient测试用例的更多相关文章

  1. 使用AirtestProject+pytest做支付宝小程序UI自动化测试

    一,前言 1,背景 因公司业务需要做支付宝小程序的UI自动化测试,于是在网上查找小程序的自动化资料,发现微信小程序是有自己的测试框架的,但几乎找不到支付宝小程序UI自动化测试相关的资料.白piao失败 ...

  2. airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告

    一:主要内容 框架功能及测试报告效果 airtest安装.环境搭建 框架搭建.框架运行说明 airtest自动化脚本编写注意事项 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的 ...

  3. POCO库中文编程参考指南(11)如何使用Reactor框架?

    1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调 ...

  4. Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows

    本文首发于个人博客https://kezunlin.me/post/9587bb47/,欢迎阅读! compile and install poco cpp library on windows Se ...

  5. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  6. poco网络库分析,教你如何学习使用开源库

    Poco::Net库中有 FTPClient HTML HTTP HTTPClient HTTPServer ICMP Logging Mail Messages NetCore NTP OAuth ...

  7. Poco库网络模块例子解析1-------字典查询

    Poco的网络模块在Poco::Net名字空间下定义   下面是字典例子解析 #include "Poco/Net/StreamSocket.h" //流式套接字 #include ...

  8. Poco::TCPServer框架解析

    Poco::TCPServer框架解析 POCO C++ Libraries提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.文件.流,网络协议包括:HTTP.FTP.SMTP ...

  9. POCO TCPServer 解析

    POCO C++ Libraries提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.文件.流,网络协议包括:HTTP.FTP.SMTP 等,还提供 XML 的解析和 SQL ...

随机推荐

  1. python-6面向对象编程

    1-类和实例 class Student(object): def __init__(self, name, score):# _init__方法的第一个参数永远是self,表示创建的实例本身 sel ...

  2. CentOS下使用Mysql

    安装过程百度,然后cd /etc->vi my.cnf修改配置文件,在mysqld下添加lower_case_table_name=1和character_set_server=utf8,保存退 ...

  3. python基础之入门基础

    编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件 ...

  4. Hive 表数据的存储和压缩格式

    SerDe * 按行存储 * 按列存储 file_format: : | SEQUENCEFILE 序列化(行存储) | TEXTFILE 文本格式(行存储)- (Default, depending ...

  5. SpringMVC---applicationContext.xml配置详解

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. MyEclipse - MyEclipse优化

    1.去除不需要的启动加载项 选择菜单:Window --> Preferences -->General --> Startup and Shutdown, 可以关掉的启动项有: J ...

  7. 4G来临,短视频社交分享应用或井喷

    因为工作的原因,接触短视频社交应用的时间相对较多,不管是自家的微视,还是别人家的Vine.玩拍.秒拍等,都有体验过.随着时间的推移,我愈发感受到有一股似曾相识的势能正在某个地方慢慢积聚,直到今天我才猛 ...

  8. Cannot create a secure XMLInputFactory --CXF调用出错

    在调用方法前加上下面三句即可调用成功: Properties props = System.getProperties(); props.setProperty("org.apache.cx ...

  9. 调整CodeIgniter错误报告级别

    修改位置:CI根目录 index.php 为开发环境与生产环境定义错误报告级别 if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'd ...

  10. NodeJs04

    REST API的设计 前言 客户端通过请求URL,传递参数,去获取指定的数据,这就是API(ApplicationProgramInterface). API是前端和客户端操作后端数据的一种方式,一 ...