佚名通过本文主要向大家介绍了setsockopt函数,linux setsockopt函数,setsockopt函数返回值,setsockopt,linux setsockopt等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:WINCE使用setsockopt函数问题
描述:
运行后setsockopt()执行失败,错误码10042,调用中指定了一个未知、 无效,或不受支持的选项或级别。
请问是由于Ws2.lib的原因吗?请问针对这个问题有解决方式吗?
(ps:当然recv超时处理的方式有很多,此处想问一下setsockopt函数的处理方式)
非常感谢!
部分代码如下:
解决方案1:
描述:
socketwince
在WINCE5.0环境下,调用setsockopt()函数实现recv超时处理时出错。运行后setsockopt()执行失败,错误码10042,调用中指定了一个未知、 无效,或不受支持的选项或级别。
请问是由于Ws2.lib的原因吗?请问针对这个问题有解决方式吗?
(ps:当然recv超时处理的方式有很多,此处想问一下setsockopt函数的处理方式)
非常感谢!
部分代码如下:
WSAStartup(MAKEWORD(1,1),&wsaData);
Server_Sock=socket(AF_INET,SOCK_STREAM,0);
Server_Addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//INADDR_ANY表示任何IP
Server_Addr.sin_family=AF_INET;
Server_Addr.sin_port=htons(Socket_Port);//绑定端口
bind(Server_Sock,(SOCKADDR*)&Server_Addr,sizeof(SOCKADDR)) ;
listen(Server_Sock,1) ;
accept(Server_Sock,(SOCKADDR*)&Client_Addr,&len);
Sleep(1000);
int delay = 1000;
g_inttest = setsockopt(Client_Sock,SOL_SOCKET,SO_RCVTIMEO,(char *)&delay,sizeof(int)); //设置接收延时
if (g_inttest <0 )
{
g_inttest = WSAGetLastError();
}
解决方案1:
请查 MSDN for 智能设备开发部分,例如:
The following list shows BSD options that are not supported for setsockopt .
SO_ACCEPTCONN
SO_RCVLOWAT
SO_RCVTIMEO
SO_SNDLOWAT
SO_SNDTIMEO
SO_TYPE