我正在研究需要执行networking通信的应用程序,并决定使用poco c ++库 。 通过networking教程后,我似乎无法findbuild立networking连接的任何forms的validation。
在以下示例中,客户端尝试使用tcp套接字stream连接到服务器:
#include "Poco/Net/SocketAddress.h" #include "Poco/Net/StreamSocket.h" #include "Poco/Net/SocketStream.h" #include "Poco/StreamCopier.h" #include <iostream> int main(int argc, char** argv) { Poco::Net::SocketAddress sa("www.appinf.com", 80); Poco::Net::StreamSocket socket(sa); Poco::Net::SocketStream str(socket); str << "GET / HTTP/1.1\r\n" "Host: www.appinf.com\r\n" "\r\n"; str.flush(); Poco::StreamCopier::copyStream(str, std::cout); return 0; }
但是,我找不到任何有关的信息:
唯一值得一提的是,如果在使用格式化input时没有为套接字设置接收超时, SocketStream可能会挂起。
我如何检查一个主机是否活着,并可能build立一个tcp连接,实现一个方法如:
void TCPClient::connectTo(std::string host, bool& connected, unsigned int port) { std::string hi = "hi"; Poco::Net::SocketAddress clientSocketAddress(host, port); Poco::Net::StreamSocket clientStreamSocket; // try to connect and avoid hang by setting a timeout clientStreamSocket.connect(clientSocketAddress, timeout); // check if the connection has failed or not, // set the connected parameter accordingly // additionally try to send bytes over this connection Poco::Net::SocketStream clientSocketStream(clientStreamSocket); clientSocketStream << hi << std::endl; clientSocketStream.flush(); // close the socket stream clientSocketStream.close(); // close stream clientStreamSocket.shutdown(); }