c++ poco StreamSocket tcpclient测试用例

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

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值