仍然,我的代码遇到了麻烦。
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来自&#39; int&#39; to&#39; const char *&#39;
答案 0 :(得分:0)
Microsoft的setsockopt()
实现第四个选项const char*
。 POSIX usually has一个const void*
。它必须指向包含值的缓冲区。最后一个参数是缓冲区的大小(以字节为单位)。
这样的事情:
setsockopt(
_socket.native_handle(), IPPROTO_IP, IP_OPTIONS,
reinterpret_cast<char*>(&route), sizeof(int));
我不太了解套接字来告诉你,你传递的内容是否真的有意义。 IP_OPTIONS Here's the documentation on MSDN。
答案 1 :(得分:0)
timeout = send_timeout_seconds * 1000;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof timeout);