簡體   English   中英

從Boost Asio客戶端發送數據

[英]Sending data from a boost asio client

我正在嘗試編寫一個程序,該程序可以通過網絡將數據發送到偵聽端口的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。

並不是您問題的真正答案,而是一種解決方法。

我認為錯誤來自std::copy調用,您可以通過直接使用std::string數據方法作為緩沖區數組來繞過它,而不是將其復制到boost::array

像這樣 :

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM