.sock文件是做什么用的

发布于 2022-08-29 16:37:54 字数 34 浏览 6 评论 0

求问.sock文件是做什么用的,完全木有概念。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

染火枫林 2022-09-05 16:37:54

就是以 .sock 为后缀的文件而已。UNIX 系统不以后缀区分文件类型,但为了方便,通常使用后缀来标识一下。.sock 文件极有可能是 UNIX 域套接字(UNIX domain socket),即通过文件系统(而非网络地址)进行寻址和访问的套接字。参见 man 手册 unix(7)(命令:man 7 unix)。

牵强ㄟ 2022-09-05 16:37:54

Unix domain socket
http://en.wikipedia.org/wiki/Unix_domain_socket

相对的是tcp sockt
http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html

例子(golang的):
出自

server.go

package main

import "net"

func echoServer(c net.Conn) {
    for {
        buf := make([]byte, 512)
        nr, err := c.Read(buf)
        if err != nil {
            return
        }

        data := buf[0:nr]
        println("Server got:", string(data))
        _, err = c.Write(data)
        if err != nil {
            panic("Write: " + err.Error())
        }
    }
}

func main() {
    l, err := net.Listen("unix", "/tmp/echo.sock")
    if err != nil {
        println("listen error", err.Error())
        return
    }

    for {
        fd, err := l.Accept()
        if err != nil {
            println("accept error", err.Error())
            return
        }

        go echoServer(fd)
    }
}

client.go

package main

import (
    "io"
    "net"
    "time"
)

func reader(r io.Reader) {
    buf := make([]byte, 1024)
    for {
        n, err := r.Read(buf[:])
        if err != nil {
            return
        }
        println("Client got:", string(buf[0:n]))
    }
}

func main() {
    c, err := net.Dial("unix", "/tmp/echo.sock")
    if err != nil {
        panic(err.Error())
    }
    defer c.Close()

    go reader(c)
    for {
        _, err := c.Write([]byte("hi...."))
        if err != nil {
            println(err.Error())
            break
        }
        time.Sleep(1e9)
    }
}

跑server的时,会建议/tmp/echo.sock文件

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文