|
boost_asio_tcp客户端获取时间
- #include <iostream>
- #include <boost/asio.hpp>
- #include <boost/array.hpp>
- using boost::asio::ip::tcp;
- int main(int argc, char *argv[]){
- std::cout << "boost_asio_tcp客户端获取时间.cpp!" << std::endl;
- try
- {
- if(argc != 2){
- // ./main time.nist.gov
- // ./main 127.0.0.1
- std::cerr << "正确用法:client <host>" << std::endl;
- return 1;
- }
- boost::asio::io_service io_service;
- tcp::resolver resolver(io_service);
- // 服务:daytime linux在 /etc/services
- // daytime 13/tcp
- // daytime 13/udp 服务或端口号
- tcp::resolver::query query(argv[1], "13");
- tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
- tcp::socket socket(io_service);
- // 同步的 阻塞的
- boost::asio::connect(socket, endpoint_iterator);
- for(;;){
- boost::array<char, 128> buf;
- boost::system::error_code error;
- // tcp 字节流服务
- size_t len = socket.read_some(boost::asio::buffer(buf), error);
- if(error == boost::asio::error::eof){
- std::cout << "服务器已经断开了socket了!\n";
- break;
- }else if (error)
- {
- throw boost::system::system_error(error);
- }
- // std::cout << "" 这种写法 控制更多
- std::cout.write(buf.data(), len); // 原始的输出 不作改变
-
- }
- }
- catch(const std::exception& e)
- {
- std::cerr << e.what() << '\n';
- }
-
- return 0;
- }
复制代码
|
|