以下の内容はhttps://iww.hateblo.jp/entry/20111031/SOCK_DGRAMより取得しました。


UNIXドメインソケットでデータグラム

UNIXドメインソケットでデータグラムを使うと、UDPの欠点が全く表に出てこないので便利。

  • データが送信単位で分割される
  • データがなくならない
  • データの順番は狂わない
  • 接続先がいないときはちゃんと接続エラーになる

UDSに対してもSO_RCVBUF*1SO_RCVTIMEOはちゃんと使えるので、思ってる以上に適当に利用できる。

UDSデータグラムサーバ

    int sd,len;
    unsigned char data[256];
    struct sockaddr_un addr = {
        .sun_path = "/tmp/HOGE",
        .sun_family = AF_UNIX,
    };

    /* サーバ部分 */
    sd = socket( AF_UNIX, SOCK_DGRAM, 0 );
    unlink(addr.sun_path);
    bind( sd, (struct sockaddr *)&addr, sizeof(addr) );

    while( (len=read(sd,data,sizeof(data))) > 0 ){
        printf("recv:%.*s\n",len,data);
    }

UDSデータグラムクライアント

    /* クライアント部分 */
    sd = socket( AF_UNIX, SOCK_DGRAM, 0 );
    sendto( sd, "Hello,world!", 12, 0, (struct sockaddr *)&addr, sizeof(addr) );
    sendto( sd, "Hello,world!", 12, 0, (struct sockaddr *)&addr, sizeof(addr) );
    sendto( sd, "Hello,world!", 12, 0, (struct sockaddr *)&addr, sizeof(addr) );

*1:使えなかった




以上の内容はhttps://iww.hateblo.jp/entry/20111031/SOCK_DGRAMより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14