go中的 net 包提供了以下功能:
func ResolveUnixAddr(net, addr string) (*UnixAddr, error)
字符串参数net
给出网络名称," unix"," unixgram"或" unixpacket"。
我猜网络名称的含义为:
unixgram :作为socket()函数中的SOCK_DGRAM类型,由网络包中的ListenPacket()使用。
unixpacket :作为socket()函数中的SOCK_STREAM类型,由网络包中的Listen()使用。
unix :
我是对的吗?
答案 0 :(得分:6)
查看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
引用顺序数据包套接字(即数据以数据包套接字的形式发送,但它们按顺序传送。