gpt4 book ai didi

sockets - go语言中的Unix域套接字名称

转载 作者:IT王子 更新时间:2023-10-29 00:56:37 27 4
gpt4 key购买 nike

go中的net包提供了这个功能:

func ResolveUnixAddr(net, addr string) (*UnixAddr, error)

字符串参数 net 给出网络名称,“unix”、“unixgram”或​​“unixpacket”。

我猜网络名称的意思是:

  • unixgram:作为 socket() 函数中的 SOCK_DGRAM 类型,由 net 包中的 ListenPacket() 使用。

  • unixpacket:作为 socket() 函数中的 SOCK_STREAM 类型,由 net 包中的 Listen() 使用。

  • unix:要么

我说得对吗?

最佳答案

查看 net/unixsock_posix.go 中的 unixSocket 函数,我们有:

var sotype int
switch net {
case "unix":
sotype = syscall.SOCK_STREAM
case "unixgram":
sotype = syscall.SOCK_DGRAM
case "unixpacket":
sotype = syscall.SOCK_SEQPACKET
default:
return nil, UnknownNetworkError(net)
}

所以你说 unixgram 是数据报套接字是对的,但是 unix 指的是流类型套接字和 unixpacket指的是顺序数据包套接字(即,数据与数据报套接字一样以数据包形式发送,但它们是按顺序传送的)。

关于sockets - go语言中的Unix域套接字名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22955226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com