免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2344 | 回复: 1
打印 上一主题 下一主题

关于socket 连接超时问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-27 17:29 |只看该作者 |倒序浏览
WORD version=MAKEWORD(2,1);
    WSADATA wsadata;
    WSAStartup(version,&wsadata);
    if(wsadata.wVersion!=version)
      printf("wrong!!\n";
    ip="192.168.1.15";
    m_iphostsource=inet_addr(ip);
     m_s=socket( AF_INET, SOCK_RAW, IPPROTO_IP );
     int rcvtimeo=5000; //5 sec insteadof 45 as default
   
    setsockopt(m_s,SOL_SOCKET,SO_RCVTIMEO,(const char *)&rcvtimeo, sizeof(rcvtimeo));   
    sa.sin_family=AF_INET;   
    sa.sin_port=htons(4000);   
    sa.sin_addr.s_addr=m_iphostsource;   
    if(bind(m_s,(sockaddr *)&sa,sizeof(sa))!=0)
        printf("bind error:%d\n",WSAGetLastError());        
    if(WSAIoctl(m_s,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)!=0)
           printf("Ioctl error:%d\n",WSAGetLastError());
    if(recv(m_s,buf,sizeof(buf),0)<0)
        printf("recv error:%d\n",WSAGetLastError());

编译后的错误代码是10060,MSDN说是连接超时,需要我调用connet()和WSAConnect()
可是为什么呢?有人帮我解释一下吗?

论坛徽章:
0
2 [报告]
发表于 2004-03-05 12:07 |只看该作者

关于socket 连接超时问题

你的程序是服务还是客户??
服务基本原型:
socket();
bind();
listen();
while(条件)
{
   accept() ;
   recv();  or   send();
}
客户原型
socket();
connect();
recv(); or send();
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP