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)