【问题标题】:Sending data from a boost asio client从 boost asio 客户端发送数据
【发布时间】:2016-11-10 10:44:16
【问题描述】:

我正在尝试编写一个程序,该程序可以通过网络将数据发送到我的 Java 服务器上侦听一个端口。

#include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/array.hpp>
#include <iostream>

void do_somenetwork(std::string host, int port, std::string message)
{
    std::array<char, 1024> _arr;
    boost::asio::io_service ios;
    boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string(host), port);
    boost::asio::ip::tcp::socket socket(ios);
    socket.connect(endpoint);

    boost::array<char, 128> buf;
    std::copy(message.begin(), message.end(), buf.begin());
    boost::system::error_code error;

    socket.write_some(boost::asio::buffer(buf, message.size()), error);

    socket.read_some(boost::asio::buffer(_arr));
    std::cout.write(&_arr[0], 1024);

    socket.close();
}

int main(){
    do_somenetwork(std::string("127.0.0.1"), 50000, ";llsdfsdf");

    char ch;
    std::cin >> ch;
}

当我使用这个程序时,我不断收到如下错误消息:

C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe -     this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 2132    1   ConsoleApplication1

我已尝试警告,但未找到与此错误相关的任何结果。有没有更好的方法来编写这段代码?我对 C++ 真的很陌生,并且对 Boost 的实际工作方式不太了解。 我正在使用 Visual Studio 2013 并提升 1.60.0。

【问题讨论】:

    标签: c++ boost boost-asio


    【解决方案1】:

    不是您问题的真正答案,而是一种解决方法。

    我认为错误来自std::copy 调用,您可以通过直接使用std::string 中的data 方法作为缓冲区数组来绕过它,而不是将其复制到您的boost::array 中。

    像这样:

    socket.write_some(boost::asio::buffer(message.data(), message.size()), error);

    【讨论】:

    • 谢谢。这确实解决了我的问题。我也是堆栈溢出的新手,我是否应该仅仅因为它解决了我的问题而接受它作为解决方案?
    • @masterconqueror 请参考此[帮助主题](stackoverflow.com/help/someone-answers] 以及此one 以了解有关在这种情况下如何处理的更多信息。欢迎来到堆栈溢出:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2016-06-19
    相关资源
    最近更新 更多