C++ 使用Poco库进行网络编程

编程入门 行业动态 更新时间:2024-10-08 12:44:45

C++ 使用Poco库进行<a href=https://www.elefans.com/category/jswz/34/1768814.html style=网络编程"/>

C++ 使用Poco库进行网络编程

C++ 使用Poco库进行网络编程

flyfish

IP地址和端口
方式一

Poco::Net::SocketAddress sa("127.0.0.1",2001);
Poco::Net::StreamSocket ss;
Poco::Timespan timeout(3000000);//microseconds = 3s
ss.connect(sa,timeout);

方式二

std::string server_ip="127.0.0.1";
Poco::UInt16 server_port= 2001;
Poco::Timespan timeout(3000000);//microseconds = 3s
Poco::Net::SocketAddress sa(server_ip, server_port);
Poco::Net::StreamSocket ss;
ss.connect(sa,timeout);

DNS

const Poco::Net::HostEntry& entry = Poco::Net::DNS::hostByName("www.example");
std::cout << "Entry Name: " << entry.name() << std::endl;
const HostEntry::AliasList& aliases = entry.aliases();
Poco::Net::HostEntry::AliasList::const_iterator it = aliases.begin();
for (; it != aliases.end(); ++it)std::cout << "Alias: " << *it << std::endl;const Poco::Net::HostEntry::AddressList& addrs = entry.addresses();Poco::Net::HostEntry::AddressList::const_iterator it_a = addrs.begin();
for (; it_a != addrs.end(); ++it_a)std::cout << "Address: " << it_a->toString() << std::endl;
return 0;

输出内容类似如下

Entry Name: ww1.sinaimg.w.alikunlun
Address: 27.221.120.146
Address: 119.167.169.194
Address: 2408:8719:3200:1:3::3eb
Address: 2408:8719:3200:1:3::3ec

TCP Poco::Net::StreamSocket

Poco::Net::SocketAddress sa("www.example", 80);
Poco::Net::StreamSocket socket(sa);
Poco::Net::SocketStream str(socket);
str << "GET / HTTP/1.1\r\n""Host: www.baidu\r\n""\r\n";
str.flush();
Poco::StreamCopier::copyStream(str, std::cout);

UDP Client

Poco::Net::SocketAddress sa("127.0.0.1", 2001);
Poco::Net::DatagramSocket dgs;
dgs.connect(sa);
Poco::Timestamp now;
std::string msg = Poco::DateTimeFormatter::format(now,"<14>%w %f %H:%M:%S Hello, world!");
dgs.sendBytes(msg.data(), msg.size());

UDP Server

Poco::Net::SocketAddress sa(Poco::Net::IPAddress(), 2001);Poco::Net::DatagramSocket dgs;
dgs.bind(sa);char buffer[1024];
for (;;)
{Poco::Net::SocketAddress sender;int n = dgs.receiveFrom(buffer, sizeof(buffer)-1, sender);buffer[n] = '\0';std::cout << sender.toString() << ": " << buffer << std::endl;
}

NetworkInterface

Poco::Net::NetworkInterface::NetworkInterfaceList list = Poco::Net::NetworkInterface::list();
if (!list.empty())
{for (Poco::Net::NetworkInterface::NetworkInterfaceList::const_iterator it = list.begin(); it != list.end(); ++it){std::cout << "Name:        " << it->name() << std::endl;std::cout << "DisplayName: " << it->displayName() << std::endl;std::cout << "Address:     " << it->address().toString() << std::endl;std::cout << "Subnet:      " << it->subnetMask().toString() << std::endl;std::cout << "Broadcast:   " << it->broadcastAddress().toString() << std::endl;std::cout << "Index:       " << it->index() << std::endl;}
}

头文件

#include <iostream>
#include <string>
#include <streambuf>#include <Poco/Net/NetException.h>
#include <Poco/Net/SocketAddress.h>
#include <Poco/Net/StreamSocket.h>
#include <Poco/Net/SocketStream.h>
#include <Poco/Net/DatagramSocket.h>#include <Poco/Net/HTTPClientSession.h>
#include <Poco/Net/HTTPCredentials.h>
#include <Poco/Net/HTMLForm.h>
#include <Poco/Net/HTTPBasicCredentials.h>
#include <Poco/Net/FilePartSource.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>#include <Poco/URI.h>
#include <Poco/Timestamp.h>
#include <Poco/DateTimeFormatter.h>#include <Poco/BinaryReader.h>
#include <Poco/StreamConverter.h>
#include <Poco/StreamCopier.h>

编译参考

cmake_minimum_required(VERSION 3.5)project(example LANGUAGES CXX)set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# set the POCO paths and libs
set(POCO_PREFIX "/home/source/lib") # the directory containing "include" and "lib"
set(POCO_INCLUDE_DIR "${POCO_PREFIX}/include")
set(POCO_LIB_DIR "${POCO_PREFIX}/lib")
set(POCO_LIBS"${POCO_LIB_DIR}/libPocoNet.so""${POCO_LIB_DIR}/libPocoUtil.so""${POCO_LIB_DIR}/libPocoFoundation.so""${POCO_LIB_DIR}/libPocoNetSSL.so")include_directories(${POCO_INCLUDE_DIR})add_executable(examplemain.cpp
)
target_link_libraries(example "${POCO_LIBS}" -pthread -lm  -ldl)

更多推荐

C++ 使用Poco库进行网络编程

本文发布于:2024-03-09 23:50:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726473.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络编程   Poco

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!