github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/net/iprawsock.go (about)

     1  // Copyright 2010 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package net
     6  
     7  import (
     8  	"github.com/shogo82148/std/syscall"
     9  )
    10  
    11  // IPAddrはIPエンドポイントのアドレスを表します。
    12  type IPAddr struct {
    13  	IP   IP
    14  	Zone string
    15  }
    16  
    17  // Networkはアドレスのネットワーク名を返します。"ip"。
    18  func (a *IPAddr) Network() string
    19  
    20  func (a *IPAddr) String() string
    21  
    22  // ResolveIPAddrはIPエンドポイントのアドレスを返します。
    23  //
    24  // ネットワークはIPネットワーク名である必要があります。
    25  //
    26  // アドレスパラメーターのホストがリテラルIPアドレスではない場合、
    27  // ResolveIPAddrはIPエンドポイントのアドレスに解決します。
    28  // そうでなければ、アドレスをリテラルのIPアドレスとして解析します。
    29  // アドレスパラメーターはホスト名を使用することもできますが、
    30  // これは推奨されません。なぜなら、ホスト名のIPアドレスのうち最大で1つしか返さないからです。
    31  //
    32  // ネットワークとアドレスパラメーターの説明については、[Dial] 関数を参照してください。
    33  func ResolveIPAddr(network, address string) (*IPAddr, error)
    34  
    35  // IPConnはIPネットワーク接続の [Conn] および [PacketConn] インターフェースの実装です。
    36  type IPConn struct {
    37  	conn
    38  }
    39  
    40  // SyscallConnは、生のネットワーク接続を返します。
    41  // これは [syscall.Conn] インターフェースを実装しています。
    42  func (c *IPConn) SyscallConn() (syscall.RawConn, error)
    43  
    44  // ReadFromIPはReadFromと同様に動作しますが、IPAddrを返します。
    45  func (c *IPConn) ReadFromIP(b []byte) (int, *IPAddr, error)
    46  
    47  // ReadFromは [PacketConn] のReadFromメソッドを実装します。
    48  func (c *IPConn) ReadFrom(b []byte) (int, Addr, error)
    49  
    50  // ReadMsgIPはcからメッセージを読み取り、ペイロードをbにコピーし、
    51  // 関連する帯域外データをoobにコピーします。bにコピーされたバイト数、oobにコピーされたバイト数、
    52  // メッセージに設定されたフラグ、およびメッセージの送信元アドレスを返します。
    53  //
    54  // パッケージ golang.org/x/net/ipv4 と golang.org/x/net/ipv6 を使用して、oobに対してIPレベルのソケットオプションを操作できます。
    55  func (c *IPConn) ReadMsgIP(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err error)
    56  
    57  // WriteToIPは [IPConn.WriteTo] と同様の動作をするが、[IPAddr] を取ります。
    58  func (c *IPConn) WriteToIP(b []byte, addr *IPAddr) (int, error)
    59  
    60  // WriteToは [PacketConn] のWriteToメソッドを実装します。
    61  func (c *IPConn) WriteTo(b []byte, addr Addr) (int, error)
    62  
    63  // WriteMsgIPは、bからペイロードを、oobから関連のオフドーバンドータをコピーし、cを経由してaddrにメッセージを送信します。送信されたペイロードとオフドーバンドズダのバイト数を返します。
    64  //
    65  // golang.org/x/net/ipv4とgolang.org/x/net/ipv6のパッケージを使用して、oob内のIPレベルのソケットオプションを操作することができます。
    66  func (c *IPConn) WriteMsgIP(b, oob []byte, addr *IPAddr) (n, oobn int, err error)
    67  
    68  // DialIPはIPネットワークに対して [Dial] のように機能します。
    69  //
    70  // ネットワークはIPネットワーク名である必要があります。詳細はfunc Dialを参照してください。
    71  //
    72  // もしladdrがnilであれば、ローカルアドレスが自動的に選択されます。
    73  // もしraddrのIPフィールドがnilであるか、未指定のIPアドレスである場合、
    74  // ローカルシステムが仮定されます。
    75  func DialIP(network string, laddr, raddr *IPAddr) (*IPConn, error)
    76  
    77  // ListenIPはIPネットワーク用の [ListenPacket] と同様に機能します。
    78  //
    79  // ネットワークはIPネットワーク名である必要があります。詳細についてはfunc Dialを参照してください。
    80  //
    81  // もしladdrのIPフィールドがnilまたは指定されていないIPアドレスである場合、
    82  // ListenIPはローカルシステムの利用可能なすべてのIPアドレスでリッスンします
    83  // マルチキャストIPアドレスを除く。
    84  func ListenIP(network string, laddr *IPAddr) (*IPConn, error)