Saya mencoba mengirim byte dalam jumlah besar menggunakan perpustakaan boost.asio sebagai berikut:
void tcp_send(boost::asio::io_service &io, const char *dst_ip, uint16 dst_port)
{
uint8 *sbuff;
size_t slen;
ip::tcp::socket sock(io);
sock.connect(ip::tcp::endpoint(ip::address::from_string(dst_ip), dst_port));
sbuff = new uint8[100412];
sbuff[0] = 67;
sbuff[1] = 193;
sbuff[2] = 136;
sbuff[3] = 60;
boost::asio::async_write(sock, boost::asio::buffer(sbuff, 100412),
boost::bind((&send_handler), placeholders::error));
}
Ketika saya memeriksa jumlah byte yang dikirimkan menggunakan Wireshark, pengirim selalu mengirimkan dan hanya 65536 byte data tidak termasuk byte header TCP. Jadi apa masalahnya? Apakah ada parameter yang perlu saya ubah.
Saya menjalankan aplikasi di linux ubuntu. Tampaknya jumlah maksimum byte yang dikirimkan adalah 2^16.