linux — загрузка с tftp сервера в ubuntu (boost :: asio c ++)

Я ищу пример TFTP-клиента, работающего на платформе Linux. Я пытаюсь сделать эту проблему, используя boost :: asio вот код:

void packi16 (char *buf, unsigned short int i){   //change the host order to network byte order (16bit)
i = htons(i);
memcpy(buf,&i,2);
}

int main()
{
boost::asio::io_service service;
boost::asio::ip::udp::socket sock(service);
sock.open(boost::asio::ip::udp::v4());
boost::asio::ip::udp::endpoint receiver_ep(boost::asio::ip::address::from_string("127.0.0.1"), 69);
char filename[] = "first";
char mode[] = "netascii";
int filename_size = (sizeof(filename)/sizeof(*filename));
int mode_size = (sizeof(mode)/sizeof(*mode));
char *packet;
packet = (char *)malloc((17)*sizeof(char));
packi16(packet,1); // 1 opcode for read request
memcpy(packet+2,filename,filename_size-1);
memset(packet+1+filename_size, '\0', 1);
memcpy(packet+2+filename_size, mode, mode_size-1);
memset(packet+1+filename_size+mode_size, '\0', 1);
sock.send_to(boost::asio::buffer(packet, 17), receiver_ep);
char buff[512];
boost::asio::ip::udp::endpoint sender_ep;
sock.receive_from(boost::asio::buffer(buff), sender_ep);
std::cout << buff;
return 0;
}

Проблема в программе без ошибок, но код ничего не печатает, хотя на сервере TFTP у меня есть этот файл: сначала. Я использую сниффер (wireshark), чтобы увидеть, что происходит в моем пакете запроса, я перехватываю пакет, созданный в tftp клиенте, в ubuntu, затем перехватываю захват моей программы, и кажется, что моя программа собирает правильный пакет.

Спасибо, господин Прабху, за ваши комментарии.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]