socket的连接超时时间怎么设置啊??

mensong 2002-09-14 09:06:36
if (connect(sock, (struct sockaddr*)&server, sizeof(server))=SOCKET_ERROR)
{
AfxMessageBox(_T("不在网络范围之内"));
return 1;
}
程序运行时似乎只要connect失败,我加的这个对话框马上就出现了。奇怪,我记得connect不是阻塞的吗?

我没有用CSocket和CAsyncSocket类,我是用socket API写的,我知道recv和send的超时设置,可是我不知道connect的超时时间怎么设置,各位大哥帮帮忙吧!

谢谢!!
...全文
390 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickymen 2002-10-11
  • 打赏
  • 举报
回复
select(sock, &Socket_Read,(fd_set *) 0,(fd_set *) 0,&timeout);

这是最好的办法之一,去看MSDN
timeguest 2002-09-16
  • 打赏
  • 举报
回复
不是超时的问题,很可能是connect参数有错误所以根本没连接就直接返回错误了,建议你用WSAGetLastError()看看错误原因
kingzai 2002-09-16
  • 打赏
  • 举报
回复
/set time out
int TimeOut=6000;
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
iterator 2002-09-16
  • 打赏
  • 举报
回复
你对IP地址和端口号有没有进行网络字节序列转化?就是用htonl,htons等函数?
mensong 2002-09-14
  • 打赏
  • 举报
回复
我越来越奇怪,我的connect函数不阻塞?!?

为什么它即使连不上服务器端也可以立即返回呢(虽然返回的是错误值)
iterator 2002-09-14
  • 打赏
  • 举报
回复
int ioctlsocket(
SOCKET s,
long cmd,
u_long FAR *argp
);

cmd = FIONBIO ;
argp = 10000;

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧