<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ``` //server.go package main import ( "fmt" "io" "net" ) func process(conn net.Conn) { defer conn.Close() //關閉connect for { //創建一個新的切片 buf := make([]byte, 1024) //1.等待客戶端通過conn發送信息 //2.如果客戶端沒有write\[發送\],那么協程就阻塞在此處 fmt.Println("服務器在等待客戶端的輸入", conn.RemoteAddr().String()) n, err := conn.Read(buf) //n是字節長度 if err == io.EOF { ? ? ? ? ? ? fmt.Println("客戶端退出") return ? ? ? ? } if err != nil { ? ? ? ? ? ? fmt.Println("服務器的read err=", err) return ? ? ? ? } ? ? ? ? fmt.Println("n=", n) //3.顯示客戶端發送的內容在服務器的終端 ? ? ? ? fmt.Print(string(buf[:n])) ? ? } } func main() { fmt.Println("服務器開始監聽......") //127.0.0.1->ipv4 0.0.0.0->ipv4和ipv6 或者:port,省略ip listen, err := net.Listen("tcp", "0.0.0.0:8899") if err != nil { ? ? ? ? fmt.Println("listen err=", err) return ? ? } defer listen.Close() //延時關閉listen //循環等待客戶端 for { ? ? ? ? fmt.Println("等待客戶端連接......") conn, err := listen.Accept() if err != nil { ? ? ? ? ? ? fmt.Println("accpet() error=", err) continue ? ? ? ? } ? ? ? ? fmt.Printf("accpet =%v ip=%v\\n", conn, conn.RemoteAddr()) go process(conn) ? ? } //fmt.Printf("listen =%v\\n", listen) } ``` ``` //client.go package main import ( "bufio" "fmt" "net" "os" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8899") if err != nil { ? ? ? ? fmt.Println("client dial err=", err) return ? ? } ? ? fmt.Println("conn succ=", conn) reader := bufio.NewReader(os.Stdin) //代表標準輸入\[終端\] //從終端讀取一行用戶輸入,并準備發送給服務器 str, err := reader.ReadString('\\n') if err != nil { ? ? ? ? fmt.Println("read string err=", err) return ? ? } //再將line發送給服務器 n, err := conn.Write(\[\]byte(str)) if err != nil { ? ? ? ? fmt.Println("conn.write err=", err) return ? ? } ? ? fmt.Printf("客戶端發送了 %d 字節的數據,并推出", n) } ```
                  <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>

                              哎呀哎呀视频在线观看