c++ poco StreamSocket tcpclient测试用例
来源:互联网 发布:golang教程 csdn 编辑:程序博客网 时间:2024/06/06 20:02
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.运行截图
0 0
- c++ poco StreamSocket tcpclient测试用例
- c++ poco Connector tcpclient测试用例
- c++ poco StreamSocket 源码剖析
- c++ poco Event测试用例
- StreamSocket确实好用!
- StreamSocket确实好用!
- tcpclient.c
- TcpClient初步测试
- poco图床测试
- POCO安装并测试
- C#.网络编程.TcpListener&TcpClient
- Poco c ++ 库安装
- c++Poco库
- TCPClient
- TcpClient tcpClient
- C#:TcpClient(客户端) and TcpServer(服务端)
- [C#]关于TcpClient编程数据接收问题
- C#GJBC-32.4.2TcpClient示例
- 面向接口编程
- VECTOR的用法
- 常见的脱壳技巧
- 小白第一次使用MD遇到的问题
- I
- c++ poco StreamSocket tcpclient测试用例
- Scala的implicit
- MongoDB——GridFS
- “可变参数列表”的学习
- 设计模式之装饰模式
- python中的坐标表示方法
- 同时安装office2016s,visio,project
- 拓扑(有向图判断环)—— HDU 5961
- Tensorflow BN