Chinaunix

标题: 请教关于setsockopt函数中对于超时参数设置的问题 [打印本页]

作者: zh1029    时间: 2004-04-23 20:45
标题: 请教关于setsockopt函数中对于超时参数设置的问题
我要写超时参数,看了网上一下文章及unix帮助,有一些疑问,有的文章介绍超时的类型是struct timeval型,而有的文章介绍是int型,我都试了但系统报错,"rotocol not available",不知是否如下所写,请指正

struct timeval stTimeOut;
stTimeOut.tv_sec=5;
stTimeOut.tv_usec=0;
(略)
if(setsockopt(nSocket,SOL_SOCKET,SO_RCVTIMEO,(char*)&stTimeOut,sizeof(stTimeOut))==-1)
{
        shutdown(nSocket,0);
        close(nSocket);
        return SET_SOCKOPT_ERR;
}
执行时直接报错"rotocol not available"
作者: lenovo    时间: 2004-04-23 22:49
标题: 请教关于setsockopt函数中对于超时参数设置的问题
你man一下你的setsockopt,
它目前未必支持SO_RCVTIMEO选项。
作者: zh1029    时间: 2004-04-24 05:54
标题: 请教关于setsockopt函数中对于超时参数设置的问题
可是在头文件中有啊?
作者: parady    时间: 2004-04-24 08:20
标题: 请教关于setsockopt函数中对于超时参数设置的问题
我查了一下,我的机器里只支持以下几种协议类型:

  1. #define IPPROTO_IP              0               /* dummy for IP */
  2. #define IPPROTO_ICMP            1               /* control message protocol */
  3. #define IPPROTO_IGMP            2               /* group mgmt protocol */
  4. #define IPPROTO_GGP             3               /* gateway^2 (deprecated) */
  5. #define IPPROTO_IPIP            4               /* IP inside IP */
  6. #define IPPROTO_TCP             6               /* tcp */
  7. #define IPPROTO_EGP             8               /* exterior gateway protocol */
  8. #define IPPROTO_PUP             12              /* pup */
  9. #define IPPROTO_UDP             17              /* user datagram protocol */
  10. #define IPPROTO_IDP             22              /* xns idp */
  11. #define IPPROTO_TP              29              /* tp-4 w/ class negotiation */
  12. #define IPPROTO_ESP             50              /* encap. security payload */
  13. #define IPPROTO_AH              51              /* authentication header */
  14. #define IPPROTO_RSVP            46              /* resource reservation proto */
  15. #define IPPROTO_EON             80              /* ISO cnlp */
  16. #define IPPROTO_IFMP            101             /* Ipsilon Flow Mgmt Protocol*/

  17. #define IPPROTO_RAW             255             /* raw IP packet */
  18. #define IPPROTO_MAX             256

复制代码

作者: zh1029    时间: 2004-04-24 13:04
标题: 请教关于setsockopt函数中对于超时参数设置的问题
[quote]原帖由 "parady"][/quote 发表:
不是协议,是socket参数
作者: lenovo    时间: 2004-04-24 15:59
标题: 请教关于setsockopt函数中对于超时参数设置的问题
你man了没有,
看了没有呀?
头文件里有又能怎么样?
说了怎么不听呢。
作者: zh1029    时间: 2004-04-25 17:04
标题: 请教关于setsockopt函数中对于超时参数设置的问题
那请教该如何设置连接超时时间呢?
作者: 飞灰橙    时间: 2004-04-25 17:30
标题: 请教关于setsockopt函数中对于超时参数设置的问题
用过一段和你一样的代码 没有问题
莫非你的系统根本就不支持?
作者: lenovo    时间: 2004-04-25 23:27
标题: 请教关于setsockopt函数中对于超时参数设置的问题
参考《unix网络编程:卷一》。
里面作者给出了三种方法,其中就
有你的这一种,另外两种是用alarm和select。
作者: windflowers1976    时间: 2004-04-26 08:23
标题: 请教关于setsockopt函数中对于超时参数设置的问题
可怜的SCO操作系统不支持.
其他应该没问题,同楼上所述.
我一般不使用ALARM,因为可能与其他设置的ALARM 冲突.
SELECT 调用是可以的.
另外,如果是不确定数据长度的话,建议采用设置非阻塞参数.
作者: henngy    时间: 2004-04-26 10:18
标题: 请教关于setsockopt函数中对于超时参数设置的问题
Alarm也不错啊
作者: 飞灰橙    时间: 2004-04-26 10:58
标题: 请教关于setsockopt函数中对于超时参数设置的问题
alarm从来没给俺一点安全感
作者: birdielu    时间: 2004-04-26 19:11
标题: 请教关于setsockopt函数中对于超时参数设置的问题
我用的是select




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2