<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## net.Pipe 雙向通信 ``` c1, c2 := net.Pipe() go func() { for i := 0; i < 10; i++ { io.WriteString(c1, "haha\n") time.Sleep(1 * time.Second) } }() go func() { for i := 0; i < 10; i++ { io.WriteString(c2, "haha\n") time.Sleep(1 * time.Second) } }() go func() { reader := bufio.NewScanner(c2) for reader.Scan() { fmt.Printf("c1->c2 %+v\n", reader.Text()) } }() go func() { reader := bufio.NewScanner(c1) for reader.Scan() { fmt.Printf("c2->c1 %+v\n", reader.Text()) } }() time.Sleep(3 * time.Second) ``` ## net.SplitHostPort ``` port, p, _ := net.SplitHostPort("127.0.0.1:1234") fmt.Println(port) // 127.0.0.1 fmt.Println(p) // 1234 ``` ## net.ResolveTCPAddr ``` addr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:1234") if err != nil { log.Fatal(err) } tcp, err := net.ListenTCP("tcp", addr) for { tcp, err := tcp.Accept() if err != nil { log.Fatal(err) } go func(tcp net.Conn) { io.Copy(tcp, tcp) }(tcp) } ``` ### net.ResolveIPAddr() ### net.ResolveUDPAddr() ### net.ResolveUnixAddr() ## net.Listen ``` listen, err := net.Listen("tcp", ":1234") if err != nil { log.Fatal(err) } for { con, err := listen.Accept() if err != nil { log.Fatal(err) } go func(con net.Conn) { io.Copy(con, con) }(con) } ``` ### net.ListenTCP() ### net.ListenPacket() ### net.ListenIP() ### net.ListenUDP() ### net.ListenMulticastUDP() ### net.ListenUnix() ``` laddr := &net.UnixAddr{Name: "", Net: "unix"} ln, err := net.ListenUnix("unix", laddr) if err != nil { log.Fatal(err) } ln.Close() ``` ### net.ListenUnixgram() ## SetReadDeadline ``` l, e := net.Listen("tcp", ":9010") if e != nil { panic(e) } defer l.Close() for{ accept, e := l.Accept() if e != nil { log.Println(e) } accept.SetReadDeadline(time.Now().Add(9*time.Second)) conn[accept.RemoteAddr().String()]=accept go handleCon(accept) } ``` ## net.Dial ``` c, e := net.Dial("tcp", ":9010") if e != nil { panic(e) } c.Write([]byte("hello word")) ``` ### net.DialTimeout() ### net.DialIP() ### net.DialTCP() ### net.DialUDP() ### net.DialUnix() ### DialContext ``` var d net.Dialer ctx, cancel := context.WithTimeout(context.Background(), time.Minute) defer cancel() conn, err := d.DialContext(ctx, "tcp", "localhost:84") if err != nil { log.Fatalf("Failed to dial: %v", err) } defer conn.Close() if _, err := conn.Write([]byte("Hello, World!")); err != nil { log.Fatal(err) } ``` ## net.ParseIP ``` type IP func IPv4(a, b, c, d byte) IP func ParseIP(s string) IP func (ip IP) IsGlobalUnicast() bool func (ip IP) IsLinkLocalUnicast() bool func (ip IP) IsInterfaceLocalMulticast() bool func (ip IP) IsLinkLocalMulticast() bool func (ip IP) IsMulticast() bool func (ip IP) IsLoopback() bool func (ip IP) IsUnspecified() bool func (ip IP) DefaultMask() IPMask func (ip IP) Equal(x IP) bool func (ip IP) To16() IP func (ip IP) To4() IP func (ip IP) Mask(mask IPMask) IP func (ip IP) String() string func (ip IP) MarshalText() ([]byte, error) func (ip *IP) UnmarshalText(text []byte) error ``` 示例 ``` ip := net.ParseIP("127.0.0.1") fmt.Println(ip.String()) // 127.0.0.1 ip = net.ParseIP("123") fmt.Println(ip) // <nil> ``` ### IPMask 根據ip獲取掩碼 ``` name := "192.168.1.97" ip := net.ParseIP(name) mask := ip.DefaultMask() network := ip.Mask(mask) fmt.Printf("%+v\n", network.String()) // 192.168.1.0 ``` ## net.LookupHost 根據域名獲取 ip ``` addrs, err := net.LookupHost("www.baidu.com") if err != nil { fmt.Println(err) return } for i, v := range addrs { fmt.Println(i, "=>", v) } //0 => 61.135.169.121 //1 => 61.135.169.125 ``` ### net.LookupIP() ### net.LookupAddr() ### net.LookupCNAME() ### net.LookupHost() ### net.LookupMX() ### net.LookupNS() ### net.LookupPort() ### net.LookupSRV() ### net.LookupTXT()
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看