ソケットを介して1文字を送信したい。受信側では、常にヌル文字として終了します。助言がありますか?C++シングルキャラクタがソケット経由で送信されない
これは常に実行されます一部
一部boost::array<char, 7> buf;
char *raw_data = buf.data();
boost::asio::ip::address ip_addr;
int port;
read((*serve_socket), boost::asio::buffer(buf));
in_addr ip_raw = *(in_addr *)(raw_data);
ip_addr = boost::asio::ip::address::from_string(inet_ntoa(ip_raw));
port = ntohs(*(short *)(raw_data + 4));
char sig = ntohs(*(char *)(raw_data+6));
を受け
char message[7];
in_addr addr;
inet_aton(splitter_socket_.local_endpoint().address().to_string().c_str(), &addr);
(*(in_addr *)&message) = addr;
(*(uint16_t *)(message + 4)) = htons(splitter_socket_.local_endpoint().port());
(*(char *)(message+6))=htons('M');
splitter_socket_.send(boost::asio::buffer(message));
を送信します。意味は、sigは常にヌル文字です しかし私は 'M'を送っていました。それは欠けている。
if(sig==0){
number_of_monitors_++;
TRACE("The number of monitors increased to "<<number_of_monitors_);
}
私が正しくあなたが「M」にhtons
をやっている
私はASIOを知らないが、私はそれが非同期であることを知っている。 'send'を呼び出した関数からASIOがバッファを使用していないことを確かめていますか? –