visual studio 2012 -如何在c++中使用setsockopt设置套接字选项
visual studio 2012 - How to set a socket option in C++ using 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 *'
Microsoft的setsockopt()
实现有第四种选择的const char*
。POSIX通常有一个const void*
。它必须指向一个包含值的缓冲区。最后一个参数是以字节为单位的缓冲区大小。
所以像这样:
setsockopt(
_socket.native_handle(), IPPROTO_IP, IP_OPTIONS,
reinterpret_cast<char*>(&route), sizeof(int));
我对套接字的了解不够,无法告诉你传递的内容是否有意义。以下是IP_OPTIONS在MSDN上的文档
timeout = send_timeout_seconds * 1000;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof timeout);
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- setSockopt在C 中不起作用(超时设置为1s,等待更长的时间)
- getsockopt() 返回的值是之前由 setsockopt() 设置的值的两倍
- setsockopt 返回 -1:errno 设置为 0
- setsockopt() 在设置大套接字 recv 缓冲区时不返回错误
- 在Linux中使用setsockopt设置connect timout
- 无法设置IP_TTL和IP_TOS Setsockopt
- visual studio 2012 -如何在c++中使用setsockopt设置套接字选项