繁体   English   中英

无法获得boost :: asio简单的同步服务器教程程序工作 - 连接被拒绝

[英]Cannot get boost::asio simple synchronous server tutorial program to work — connection refused

我下面的介绍套接字boost::asio教程这里 ,称为同步TCP daytime客户端 我已经完全复制了代码,但后来将它们移动到Server.cpp和Client.cpp中。

Server.cpp

#include <ctime>
#include <iostream>
#include <string>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

std::string make_daytime_string()
{
  std::time_t now = time(0);
  return ctime(&now);
}

int main()
{
  try {
    std::cout << "Initiating server..." << std::endl;

    boost::asio::io_service io;

    tcp::acceptor acceptor (io, tcp::endpoint(tcp::v4(), 8889));

    for (;;) {
      tcp::socket socket (io);
      acceptor.accept(socket);

      std::string message = make_daytime_string();

      boost::system::error_code ignored_error;
      boost::asio::write(socket, boost::asio::buffer(message), ignored_error);
    }
  }
  catch (std::exception & e) {
    std::cerr << e.what() << std::endl;
  }

  return 0;
}

Client.cpp

#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

int main(int argc, char * argv[])
{
  boost::asio::io_service io;

  // Daytime
  try {
    if (argc != 2) {
      std::cerr << "Usage: client <host>" << std::endl;
      return 1;
    }

    tcp::resolver resolver (io);
    tcp::resolver::query query (argv[1], "daytime");
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);

    tcp::socket socket (io);
    boost::asio::connect(socket, endpoint_iterator);

    for (;;) {
      boost::array<char, 128> buffer;
      boost::system::error_code error;
      size_t len = socket.read_some(boost::asio::buffer(buffer), error);

      if (error == boost::asio::error::eof) {
        break; // Connection closed cleanly by peer.
      }
      else if (error) {
        throw boost::system::system_error(error); // Some other error.
      }

      std::cout.write(buffer.data(), len);
    }
  }
  catch (std::exception & e) {
    std::cerr << e.what() << std::endl;
  }

  return 0;
}

首先我运行服务器:

$ ./server 
Initiating server...

然后我运行客户端:

$ ./client localhost
connect: Connection refused

由于我是套接字和提升的新手,不幸的是我一直在寻找解决这个连接被拒绝的错误消息。

您的服务器正在端口8889上运行。

您的客户端在端口13(也称为"daytime" )上连接。

这不行。 原因很明显。

请注意,如果您决定在端口13上运行服务器,则需要具有管理权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM