【问题标题】:SO_PEERCRED missing in ruby-1.8.7?ruby-1.8.7 中缺少 SO_PEERCRED?
【发布时间】:2012-03-13 03:29:05
【问题描述】:

不确定如何在 ruby​​ 中恢复连接到 UNIX 套接字的进程的 peer id。我检查并不确定 SO_PEERCRED 的定义位置。我正在使用 ruby​​-1.8.7

Socket.constants.sort => [“AF_APPLETALK”、“AF_CCITT”、“AF_CHAOS”、“AF_CNT”、“AF_COIP”、“AF_DATAKIT”、“AF_DLI”、“AF_E164”、“AF_ECMA”、“AF_HYLINK”、“AF_IMPLINK”、“AF_INET” 、“AF_INET6”、“AF_IPX”、“AF_ISDN”、“AF_ISO”、“AF_LAT”、“AF_LINK”、“AF_LOCAL”、“AF_MAX”、“AF_NATM”、“AF_NDRV”、“AF_NETBIOS”、“AF_NS”、“ AF_OSI"、"AF_PPP"、"AF_PUP"、"AF_ROUTE"、"AF_SIP"、"AF_SNA"、"AF_SYSTEM"、"AF_UNIX"、"AF_UNSPEC"、"AI_ADDRCONFIG"、"AI_ALL"、"AI_CANONNAME"、"AI_DEFAULT" 、“AI_MASK”、“AI_NUMERICHOST”、“AI_PASSIVE”、“AI_V4MAPPED”、“AI_V4MAPPED_CFG”、“APPEND”、“CREAT”、“常量”、“EAI_ADDRFAMILY”、“EAI_AGAIN”、“EAI_BADFLAGS”、“EAI_BADHINTS”、“ EAI_FAIL”、“EAI_FAMILY”、“EAI_MAX”、“EAI_MEMORY”、“EAI_NODATA”、“EAI_NONAME”、“EAI_PROTOCOL”、“EAI_SERVICE”、“EAI_SOCKTYPE”、“EAI_SYSTEM”、“EXCL”、“枚举器”、“FNM_CASEFOLD” 、“FNM_DOTMATCH”、“FNM_NOESCAPE”、“FNM_PATHNAME”、“FNM_SYSCASE”、“INADDR_ALLHOSTS_GROUP”、“INADDR_ANY”、“INADDR_BROADCAST”、“INADDR_LOOPBACK”、“INADDR_MAX_LOCAL_GROUP”、“INADDR_NONE”、“INADDR_UNSPEC_GROUP”、“IPPORT_R ESERVED、“IPPORT_USERRESERVED”、“IPPROTO_EGP”、“IPPROTO_EON”、“IPPROTO_GGP”、“IPPROTO_HELLO”、“IPPROTO_ICMP”、“IPPROTO_IDP”、“IPPROTO_IGMP”、“IPPROTO_IP”、“IPPROTO_MAX”、“IPPROTO_ND”、“IPPROTO_PUP” 、“IPPROTO_RAW”、“IPPROTO_TCP”、“IPPROTO_TP”、“IPPROTO_UDP”、“IPPROTO_XTP”、“IP_ADD_MEMBERSHIP”、“IP_DEFAULT_MULTICAST_LOOP”、“IP_DEFAULT_MULTICAST_TTL”、“IP_DROP_MEMBERSHIP”、“IP_HDRINCL”、“IP_MAX_MEMBERSHIPS”、“IP_MULTICAST” IP_MULTICAST_LOOP"、"IP_MULTICAST_TTL"、"IP_OPTIONS"、"IP_RECVDSTADDR"、"IP_RECVOPTS"、"IP_RECVRETOPTS"、"IP_RETOPTS"、"IP_TOS"、"IP_TTL"、"LOCK_EX"、"LOCK_NB"、"LOCK_SH"、"LOCK_UN" 、“MSG_CTRUNC”、“MSG_DONTROUTE”、“MSG_DONTWAIT”、“MSG_EOF”、“MSG_EOR”、“MSG_FLUSH”、“MSG_HAVEMORE”、“MSG_HOLD”、“MSG_OOB”、“MSG_PEEK”、“MSG_RCVMORE”、“MSG_SEND”、“ MSG_TRUNC"、"MSG_WAITALL"、"NI_DGRAM"、"NI_MAXHOST"、"NI_MAXSERV"、"NI_NAMEREQD"、"NI_NOFQDN"、"NI_NUMERICHOST"、"NI_NUMERICSERV"、"NOCTTY"、"NONBLOCK"、"PF_APPLETALK"、"PF_CCITT" 、“PF_CHAOS”、“PF_CNT”、“PF_COIP”、“PF_DATAKIT” 、“PF_DLI”、“PF_ECMA”、“PF_HYLINK”、“PF_IMPLINK”、“PF_INET”、“PF_INET6”、“PF_IPX”、“PF_ISDN”、“PF_ISO”、“PF_KEY”、“PF_LAT”、“PF_LINK”、“ PF_LOCAL"、"PF_MAX"、"PF_NATM"、"PF_NDRV"、"PF_NETBIOS"、"PF_NS"、"PF_OSI"、"PF_PIP"、"PF_PPP"、"PF_PUP"、"PF_ROUTE"、"PF_RTIP"、"PF_SIP" 、“PF_SNA”、“PF_SYSTEM”、“PF_UNIX”、“PF_UNSPEC”、“PF_XTP”、“RDONLY”、“RDWR”、“SEEK_CUR”、“SEEK_END”、“SEEK_SET”、“SHUT_RD”、“SHUT_RDWR”、“ SHUT_WR"、"SOCK_DGRAM"、"SOCK_RAW"、"SOCK_RDM"、"SOCK_SEQPACKET"、"SOCK_STREAM"、"SOL_SOCKET"、"SO_ACCEPTCONN"、"SO_BROADCAST"、"SO_DEBUG"、"SO_DONTROUTE"、"SO_DONTTRUNC"、"SO_ERROR" 、“SO_KEEPALIVE”、“SO_LINGER”、“SO_NKE”、“SO_NOSIGPIPE”、“SO_NREAD”、“SO_OOBINLINE”、“SO_RCVBUF”、“SO_RCVLOWAT”、“SO_RCVTIMEO”、“SO_REUSEADDR”、“SO_REUSEPORT”、“SO_SNDBUF”、“ SO_SNDLOWAT”、“SO_SNDTIMEO”、“SO_TIMESTAMP”、“SO_TYPE”、“SO_USELOOPBACK”、“SO_WANTMORE”、“SO_WANTOOBFLAG”、“SYNC”、“TCP_MAXSEG”、“TCP_NODELAY”、“TRUNC”、“WRONLY”]

【问题讨论】:

    标签: ruby sockets networking


    【解决方案1】:

    您使用的是什么操作系统? SO_PEERCRED 仅适用于 Linux,并且是 only defined in Ruby if it exists on the platform

    比较:

    $ uname
    Linux
    $ ruby -e "require 'socket'; puts Socket.constants.include? :SO_PEERCRED"
    true
    

    $ uname
    Darwin
    $ ruby -e "require 'socket'; puts Socket.constants.include? :SO_PEERCRED"
    false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多