nginx - Untuk apa fail .sock digunakan?
PHP中文网
PHP中文网 2017-05-16 17:03:49
0
2
862

Untuk apa fail .sock saya tidak tahu langsung. . .

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
某草草

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

淡淡烟草味

Soket domain Unix
http://ms.wikipedia.org/wiki/Soket_domain_Unix

Sebaliknya ialah tcp sockt
http://lists.freebsd.org/pipermail/freebsd-performance/2005-February/001143.html

Contoh (golang):
Daripada ini

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)
    }
}

Apabila menjalankan pelayan, fail /tmp/echo.sock akan dicadangkan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan