Winsock例子代码:初始化、阻塞/非阻塞、超时设置、select等
来源:互联网 发布:dj小可网络电音歌曲 编辑:程序博客网 时间:2024/06/08 05:53
WSADATA wsd;
SOCKET cClient;
int ret;
struct sockaddr_in server;
hostent *host=NULL;
if(WSAStartup(MAKEWORD(2,0),&wsd)){return 0;}
cClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cClient==INVALID_SOCKET){return 0;}
//set Recv and Send time out
int TimeOut=6000; //设置发送超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
TimeOut=6000;//设置接收超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
//设置非阻塞方式连接
unsigned long ul = 1;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul);
if(ret==SOCKET_ERROR)return 0;
//连接
server.sin_family = AF_INET;
server.sin_port = htons(25);
server.sin_addr .s_addr = inet_addr((LPCSTR)pSmtp);
if(server.sin_addr.s_addr == INADDR_NONE){return 0;}
connect(cClient,(const struct sockaddr *)&server,sizeof(server));
//select 模型,即设置超时
struct timeval timeout ;
fd_set r;
FD_ZERO(&r);
FD_SET(cClient, &r);
timeout.tv_sec = 15; //连接超时15秒
timeout.tv_usec =0;
ret = select(0, 0, &r, 0, &timeout);
if ( ret <= 0 )
{
::closesocket(cClient);
return 0;
}
//一般非锁定模式套接比较难控制,可以根据实际情况考虑 再设回阻塞模式
unsigned long ul1= 0 ;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul1);
if(ret==SOCKET_ERROR){
::closesocket (cClient);
return 0;
}
SOCKET cClient;
int ret;
struct sockaddr_in server;
hostent *host=NULL;
if(WSAStartup(MAKEWORD(2,0),&wsd)){return 0;}
cClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cClient==INVALID_SOCKET){return 0;}
//set Recv and Send time out
int TimeOut=6000; //设置发送超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
TimeOut=6000;//设置接收超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
//设置非阻塞方式连接
unsigned long ul = 1;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul);
if(ret==SOCKET_ERROR)return 0;
//连接
server.sin_family = AF_INET;
server.sin_port = htons(25);
server.sin_addr .s_addr = inet_addr((LPCSTR)pSmtp);
if(server.sin_addr.s_addr == INADDR_NONE){return 0;}
connect(cClient,(const struct sockaddr *)&server,sizeof(server));
//select 模型,即设置超时
struct timeval timeout ;
fd_set r;
FD_ZERO(&r);
FD_SET(cClient, &r);
timeout.tv_sec = 15; //连接超时15秒
timeout.tv_usec =0;
ret = select(0, 0, &r, 0, &timeout);
if ( ret <= 0 )
{
::closesocket(cClient);
return 0;
}
//一般非锁定模式套接比较难控制,可以根据实际情况考虑 再设回阻塞模式
unsigned long ul1= 0 ;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul1);
if(ret==SOCKET_ERROR){
::closesocket (cClient);
return 0;
}
0 0
- Winsock例子代码:初始化、阻塞/非阻塞、超时设置、select等
- Winsock例子代码:初始化、阻塞/非阻塞、超时设置、select等
- Winsock例子代码:初始化、阻塞/非阻塞、超时设置、select等
- [VC]setsockopt 设置socket 详细用法(超时、非阻塞等)
- [VC]setsockopt 设置socket 详细用法(超时、非阻塞等)
- socket中各个阻塞,非阻塞,初始化和超时时间设置
- 非阻塞WINSOCK
- socket中设置收发超时、非阻塞
- connect超时设置.阻塞和非阻塞 ioctlsocket函数
- windows网络编程之Winsock非阻塞select模式服务器
- IO阻塞非阻塞. select
- IO阻塞非阻塞. select
- 阻塞 非阻塞 select epoll
- 关于非阻塞connect和select设置
- select 非阻塞模式 服务器 代码
- linux c实现超时、非阻塞socket的函数select
- WSAAsyncSelect() 非阻塞模式WinSock
- socket 设置阻塞超时
- 明度、色阶和曲线
- IOS引用私有private framework API 图解
- csc命令使用的一些参数
- 2015062209 - 一天一本书的价值在哪里?
- 学习OpenCV——Kalman滤波
- Winsock例子代码:初始化、阻塞/非阻塞、超时设置、select等
- 详解树状数组三种模型
- 上传图片文件
- 百度_谷歌_雅虎搜索引擎URL参数全解析
- 1-2-3-4-5-6-7-8-9-10的意思
- 国防电子代表队荣获2014年成都市百万职工技能大赛计算机程序员决赛团体第一名
- 数据交换格式XML和JSON对比
- textarea全屏显示(jquery.textareafullscreen.js插件)
- java动态代理(JDK和cglib)