gpt4 book ai didi

sockets - 使用 os.OpenFile() 而不是 net.Listen()

转载 作者:数据小太阳 更新时间:2023-10-29 03:38:48 24 4
gpt4 key购买 nike

我深入研究了 os.OpenFilenet.Listen 的调用堆栈,看看我是否可以使用 os 创建一个 UNIX 域套接字。打开文件。以下是我的尝试。但是,在跟踪两个调用堆栈(os.OpenFilenet.Listen)之后,我仍然感到困惑。显然,下面的代码没有从文件中读取数据,而是将数据存储到文件系统。

  1. 如何使用 os.OpenFile 实现 UNIX 域套接字?
  2. 如果 os.ModeSocket 不与 os.OpenFile 一起使用以创建 UNIX 套接字,它的用途是什么?
package main

import (
"fmt"
"log"
"os"
)

func main() {
sock, err := os.OpenFile("f.sock", os.O_RDWR|os.O_CREATE, os.ModeSocket|os.ModePerm)
defer sock.Close()
if err != nil {
log.Panic(err)
}
n, err := sock.WriteString("hello\n")
if err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
b := make([]byte, 10)
n, err = sock.Read(b)
fmt.Println(n)
if err != nil {
fmt.Println("error reading: ", err)
}
fmt.Println(b)
}

最佳答案

  1. 没有。 OpenFile 是一个用于打开文件的通用 api,使用 net.Listen("unixpacket", "f.sock")net.Dial("unixpacket", "f.sock") 如果你想使用 unix socket

  2. os.ModeSocket 只是一个 *nix 注册的 socket fd 标志,当你想过滤 fd 类型时使用

关于sockets - 使用 os.OpenFile() 而不是 net.Listen(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56862705/

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