Visual Studio 2012 — Как установить опцию сокета в C ++ с помощью setsockopt

Тем не менее, проблемы с моим кодом.

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 *’

-1

Решение

Реализация Microsoft setsockopt() имеет const char* для четвертого варианта. POSIX обычно имеет const void*, Он должен указывать на буфер, который содержит значения. Последний аргумент — это размер в байтах буфера.

Так что-то вроде этого:

setsockopt(
_socket.native_handle(), IPPROTO_IP, IP_OPTIONS,
reinterpret_cast<char*>(&route), sizeof(int));

Я не знаю достаточно о сокетах, чтобы сказать вам, имеет ли смысл то, что вы передаете. Вот документация по MSDN для IP_OPTIONS.

0

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


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