Тем не менее, проблемы с моим кодом.
if (argc > 0) {
int route (argc);//[argc+1]
((char*) route)[0] = 1;
((char*) route)[1] = 2;//131
((char*) route)[2] = 3 + argc * 4;
((char*) route)[3] = 4;
for (int i = 0; i < argc; i++) {
route = inet_addr(argv[i]);
}
if (setsockopt(_socket.native_handle(), IPPROTO_IP, IP_OPTIONS, route, (argc + 1) * 4) < 0) {
perror("can't set socket option");
}
}
вот часть этого, продолжайте получать эту ошибку C2664: невозможно преобразовать параметр 4 из ‘int’ в ‘const char *’
Реализация Microsoft setsockopt()
имеет const char*
для четвертого варианта. POSIX обычно имеет const void*
, Он должен указывать на буфер, который содержит значения. Последний аргумент — это размер в байтах буфера.
Так что-то вроде этого:
setsockopt(
_socket.native_handle(), IPPROTO_IP, IP_OPTIONS,
reinterpret_cast<char*>(&route), sizeof(int));
Я не знаю достаточно о сокетах, чтобы сказать вам, имеет ли смысл то, что вы передаете. Вот документация по MSDN для IP_OPTIONS.