Open4

unix domain socketをGoで実装する

tomokitomoki

Go言語でunix domain socketを実装するには、「net」パッケージを使用します。unix domain socketを使用するには、まず「net.Listen」関数を使用してサーバー側のソケットを作成します。次に、「net.Accept」関数を使用してクライアントからの接続を待ちます。クライアント側では、「net.Dial」関数を使用してサーバー側のソケットに接続します。

接続が確立したら、「net.Conn」インタフェースを使用して、データの送受信を行います。「net.Conn.Read」関数を使用してデータを読み込み、「net.Conn.Write」関数を使用してデータを書き込むことができます。

以上が、Go言語でunix domain socketを実装する方法についての簡単な説明です。Go言語の「net」パッケージを使用することで、unix domain socketを簡単に実装することができます。

tomokitomoki
package main

import (
    "fmt"
    "net"
    "os"
)

func main() {
    // サーバー側のソケットを作成
    l, err := net.Listen("unix", "./mysocket")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer l.Close()

    // クライアントからの接続を待ち受ける
    conn, err := l.Accept()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer conn.Close()

    // クライアントから送信されたデータを読み込む
    buf := make([]byte, 1024)
    n, err := conn.Read(buf)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    // 読み込んだデータを表示
    fmt.Println(string(buf[:n]))

    // クライアントにデータを送信する
    _, err = conn.Write([]byte("Hello from server!"))
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

tomokitomoki

このコードでは、まず「net.Listen」関数を使用してサーバー側のunix domain socketを作成します。次に、「net.Accept」関数を使用してクライアントからの接続を待ち受けます。クライアントからの接続が確立したら、「net.Conn.Read」関数を使用してクライアントから送信されたデータを読み込み、「net.Conn.Write」関数を使用してクライアントにデータを送信します。

このサンプルコードを実行するには、まずサーバー側のプログラムを実行します。次に、別のターミナルでクライアント側のプログラムを実行します。これにより、サーバー側とクライアント側でunix domain socketを使用した通信が行われます。

以上が、Go言語でunix domain socketを実装する方法についてでした。