社区
网络编程
帖子详情
如何超时处理?
defendmidfield
2004-07-22 11:47:52
有这样一个需求
往服务端发送请求,然后需要等待服务端response的包
现在是超时如何处理?窝现在感觉可以用event处理,但不知道如何下手
需要一些意见,谢谢
...全文
239
5
打赏
收藏
如何超时处理?
有这样一个需求 往服务端发送请求,然后需要等待服务端response的包 现在是超时如何处理?窝现在感觉可以用event处理,但不知道如何下手 需要一些意见,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
PiggyXP
2004-07-22
打赏
举报
回复
嗯,这种情况就是自己设定Timer就好了:)
defendmidfield
2004-07-22
打赏
举报
回复
嗯。看来思路正确...
继续等待其他思路提示者,谢谢
晚上结帐...
gracezhu
2004-07-22
打赏
举报
回复
udp啊??那就无所谓连接超时得问题了,因为根本就没连接,所以你完全可以自己定,用定时器或事件等待都行,只要能计时.
defendmidfield
2004-07-22
打赏
举报
回复
谢谢gracezhu(eutom)
不过这里是通过udp传输,需求是我发送一个数据包到服务器,然后等待服务器返回response,期间也可能收到服务器其他的数据包作处理........
所以select的这个是不行的,我只能有一个标识位,通过标识位在超时的时候看response有没有收到..........
settimer抑或createevent???
谢谢指教.....
gracezhu
2004-07-22
打赏
举报
回复
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;
}
电商平台每秒100万高并发请求的秒杀系统架构设计和实现
5、面对用户
超时
未支付的订单,我们该如何设计和
处理
,包括订单信息变更和库存变更等。 等等的问题? 本课程将从实战角度带你构建秒杀系统,解决以上我们关注的问题,同时结合实战讲解技术点,让大家在实战...
python如何实现任务
超时
处理
?
假如服务器无法保证在五秒内
处理
并回复,必须做出下述回复,这样微信服务器才不会对此作任何
处理
,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明:...
用Java刷OJ
超时
怎么办?原因分析及解决方式
Java
超时
原因?又是Java
超时
。PAT不给Java延时,简直欺负Java选手。因为Java本身底层的一些原因,编译、运行起来会比其他语言慢一些。有很多其他OJ都放宽Java时间限制了。那为啥PAT不放宽Java时间限制? 也可能是...
rabbitm中消息
超时
怎么办?
方法进行
超时
消息
处理
。请注意,以上示例仅为演示代码,并未涵盖所有异常情况和实际业务需求,具体实现需要根据实际情况进行调整和扩展。在RabbitMQ中,如果消息在指定的时间内没有被消费者消费,就会发生消息
超时
...
【电气专业知识问答】问:电动机启动
超时
如何
处理
?
答:电动机启动时间超过正常规定的时间而转速未达到额定值时,应立即拉开断路器停止启动;检查是否过负荷,轴承是否有卡涩现象;检查厂用电压是否太低,电源电缆...问:电动机启动
超时
如何
处理
?【电气专业知识问答】
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章