網路通訊3:TCP互動通訊
服務端實現
import (
"fmt"
"net"
"os"
"strings"
)
func CheckErrorS(err error) {
if err != nil {
fmt.Println("網路錯誤", err.Error())
os.Exit(1)
}
}
func Processinfo(conn net.Conn) {
buffer := make([]byte, 1024) //開創緩衝區
defer conn.Close() //關閉連線
for {
n, err := conn.Read(buffer) //讀取資料
CheckErrorS(err)
if n != 0 {
//拿到客戶端地址
remoteAddr := conn.RemoteAddr()
msg := string(buffer[:n])
fmt.Println("收到訊息",msg, "來自", remoteAddr)
if strings.Contains(msg,"錢") {
conn.Write([]byte("fuckoff"))
break
}
conn.Write([]byte("已閱:"+msg))
}
}
}
func main() {
//建立TCP伺服器
listener, err := net.Listen("tcp", "127.0.0.1:8898")
CheckErrorS(err)
defer listener.Close() //關閉網路
fmt.Println("伺服器正在等待")
for {
conn, err := listener.Accept() //新的客戶端連線
CheckErrorS(err)
//處理每一個客戶端
go Processinfo(conn)
}
}
客戶端實現
import (
"fmt"
"net"
"bufio"
"os"
)
func CheckErrorC(err error) {
if err != nil {
fmt.Println("網路錯誤", err.Error())
os.Exit(1)
}
}
func MessageSend(conn net.Conn) {
var msg string
reader := bufio.NewReader(os.Stdin) //讀取鍵盤輸入
for {
lineBytes, _, _ := reader.ReadLine() //讀取一行
msg = string(lineBytes) //鍵盤輸入轉化為字串
if msg == "exit" {
conn.Close()
fmt.Println("客戶端關閉")
break
}
_, err := conn.Write([]byte(msg)) //輸入寫入字串
if err != nil {
conn.Close()
fmt.Println("客戶端關閉")
break
}
}
}
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:8898") //建立TCP伺服器
CheckErrorC(err) //檢查錯誤
defer conn.Close()
//傳送訊息中有阻塞讀取標準輸入的程式碼
//為了避免阻塞住訊息的接收,所以把它獨立的協程中
go MessageSend(conn)
buffer := make([]byte, 1024)
for {
n, err := conn.Read(buffer)
CheckErrorC(err)
msg := string(buffer[:n])
fmt.Println("收到伺服器訊息", msg)
if msg=="fuckoff"{
break
}
}
fmt.Println("連線已斷開")
}
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- 網路通訊2:TCP簡單通訊TCP
- 網路通訊2:TCP通訊實現TCP
- 網路通訊4:TCP廣播TCP
- TCP通訊TCP
- 網路通訊
- 網路通訊協議-TCP協議詳解!協議TCP
- modbus tcp通訊TCP
- udp網路通訊UDP
- Linux TCP通訊示例LinuxTCP
- React Native與Android通訊互動React NativeAndroid
- 19作 網路通訊
- dubbo網路通訊(四)
- 網路通訊1:UDPUDP
- 網路通訊基礎
- 網路通訊協議協議
- NModbus4 TCP通訊TCP
- 網路通訊3:HTTP實現文字傳輸HTTP
- 網路-淺談批次通訊和自主通訊的區別
- 網路通訊程式設計程式設計
- docker系列(五):網路通訊Docker
- Java實現TCP通訊程式JavaTCP
- TCP/IP 通訊傳輸流TCP
- Linux學習/TCP Socket通訊LinuxTCP
- Python 基於 TCP 傳輸協議的網路通訊實現PythonTCP協議
- Android 整合 Flutter 及通訊互動詳解AndroidFlutter
- WebRTC---網路實時通訊Web
- 網路通訊技術基礎
- 快速理解網路通訊協議協議
- Calico 網路通訊原理揭祕
- 網路通訊單元NU系列
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- Java進階:基於TCP通訊的網路實時聊天室JavaTCP
- liunx通過TCP傳送資訊TCP
- TCP/IP的通訊過程-VeCloudTCPCloud
- C語言實現TCP通訊C語言TCP
- 西門子PLC Modus TCP通訊TCP
- Go語言實現TCP通訊GoTCP
- 一個簡單混合協議通訊列子,物聯網和網際網路通訊。協議