校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Golang 實現Socket服務端和客戶端使用TCP協議通訊

Golang 實現Socket服務端和客戶端使用TCP協議通訊

熱門標簽:谷歌美發店地圖標注 利用地圖標注位置 地圖區域圖標注后導出 赤峰電銷 貴州電話智能外呼系統 官渡電銷外呼管理系統怎么收費 杭州人工智能電銷機器人費用 江蘇呼叫中心外呼系統有效果嗎 400開頭電話怎樣申請

Socket服務器是網絡服務中常用的服務器。使用go語言實現這個業務場景是很容易的。

這樣的網絡通訊,需要一個服務端和至少一個客戶端。

我們計劃構建一個這樣的通訊工程。服務端啟動后等待客戶端的訪問。客戶端發送一段信息給服務端。服務端接收到信息后,再回饋給客戶端一段信息。

首先要建立服務端。服務端最先要做的事情就是"建立Socket端口監聽"。

netListen, err := net.Listen("tcp", "localhost:1024")

上面的代碼,表名監聽的是本機端口1024,而使用的通訊協議是TCP。

當監聽結束,模塊任務完成后,最后要close這個netListen。

defer netListen.Close()

使用日志功能,讓服務端窗口能看到服務端已經運行了。

Log("Waiting for clients ...")

之后使用一個for循環,無盡的等待那些不知何時來訪問的客戶端信息。

for循環體內,要監聽netListen的信息接收情況:

conn, err := netListen.Accept()

當有來自客戶端的訪問時,接受訪問。并在服務端的日志記錄已經有客戶端連接成功了。

Log(conn.RemoteAddr().String(), "tcp connect success")

conn.RemoteAddr().String()表示的就是遠程客戶端。

然后,我們開啟一個goroutine處理連接任務。

go handleConnection(conn)

處理過程就是接收客戶端信息和反饋給客戶端信息。

n, err := conn.Read(buffer)

conn.Write([]byte(strTemp))

服務端代碼示例

package main 
import (
  "net"
  "fmt"
  "os"
  "log"
  "time"
)
 
func main() {
  //建立socket端口監聽
  netListen, err := net.Listen("tcp", "localhost:1024")
  CheckError(err) 
  defer netListen.Close() 
  Log("Waiting for clients ...")
 
  //等待客戶端訪問
  for{
    conn, err := netListen.Accept()   //監聽接收
    if err != nil{
      continue    //如果發生錯誤,繼續下一個循環。
    } 
    Log(conn.RemoteAddr().String(), "tcp connect success") //tcp連接成功
    go handleConnection(conn)
  }
}
 
//處理連接
func handleConnection(conn net.Conn) {
  buffer := make([]byte, 2048)    //建立一個slice
  for{
    n, err := conn.Read(buffer)   //讀取客戶端傳來的內容
    if err != nil{
      Log(conn.RemoteAddr().String(), "connection error: ", err)
      return   //當遠程客戶端連接發生錯誤(斷開)后,終止此協程。
    } 
    Log(conn.RemoteAddr().String(), "receive data string:\n", string(buffer[:n]))
 
    //返回給客戶端的信息
    strTemp := "CofoxServer got msg \""+string(buffer[:n])+"\" at "+time.Now().String()
    conn.Write([]byte(strTemp))
  }
}
 
//日志處理
func Log(v ...interface{}) {
  log.Println(v...)
}
 
//錯誤處理
func CheckError(err error) {
  if err != nil{
    fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
  }
}

客戶端的業務邏輯是,發送信息給服務端,然后接收服務端的反饋。

conn, err := net.DialTCP("tcp", nil, tcpAddr)

用TCP協議撥號(Dial)到服務端。如果沒有發生錯誤,就說明撥通了。于是在客戶端日志記錄連接成功

fmt.Println("connection success")

然后在這個已經通暢的連接里,進行發送和接收信息的任務。conn.Write([]byte(words))是發送信息;conn.Read(buffer)是接收信息。如果接收發生錯誤,就記錄錯誤:

Log(conn.RemoteAddr().String(), "waiting server back msg error: ", err)

并且中斷進程。

如果沒有發生錯誤,酒吧接收到的信息在日志中記錄。

Log(conn.RemoteAddr().String(), "receive server back msg: ", string(buffer[:n]))

客戶端代碼示例

package main 
import (
  "net"
  "fmt"
  "log"
  "os"
)
//發送信息
func sender(conn net.Conn) {
  words := "Hello Server!"
  conn.Write([]byte(words))
  fmt.Println("send over")
 
  //接收服務端反饋
  buffer := make([]byte, 2048) 
  n, err := conn.Read(buffer)
  if err != nil {
    Log(conn.RemoteAddr().String(), "waiting server back msg error: ", err)
    return
  }
  Log(conn.RemoteAddr().String(), "receive server back msg: ", string(buffer[:n]))
 
}
//日志
func Log(v ...interface{}) {
  log.Println(v...)
}
 
func main() {
  server := "127.0.0.1:1024"
  tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
  if err != nil {
    fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
    os.Exit(1)
  }
  conn, err := net.DialTCP("tcp", nil, tcpAddr)
  if err != nil {
    fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
    os.Exit(1)
  }
 
  fmt.Println("connection success")
  sender(conn)
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang 實現tcp server端和client端,并計算RTT時間操作
  • 使用Go基于WebSocket構建千萬級視頻直播彈幕系統的代碼詳解
  • golang websocket 服務端的實現
  • golang socket斷點續傳大文件的實現方法
  • golang基于websocket實現的簡易聊天室程序
  • golang網絡socket粘包問題的解決方法

標簽:河池 黔西 武漢 泰安 鷹潭 保定 宜春 松原

巨人網絡通訊聲明:本文標題《Golang 實現Socket服務端和客戶端使用TCP協議通訊》,本文關鍵詞  Golang,實現,Socket,服務,端,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang 實現Socket服務端和客戶端使用TCP協議通訊》相關的同類信息!
  • 本頁收集關于Golang 實現Socket服務端和客戶端使用TCP協議通訊的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久久久久久久久久黄色| 欧美日韩高清一区二区三区| 在线观看视频一区二区欧美日韩| 亚洲欧洲日韩av| 99r精品视频| 一区二区三区日韩精品视频| 欧美日韩高清不卡| 在线免费不卡电影| 欧美三级日韩三级| 国产成人精品亚洲777人妖| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩国产免费一区二区| 日韩一区二区在线观看| 国产高清精品久久久久| 成人av先锋影音| 奇米888四色在线精品| 国产精品黄色在线观看 | 日韩一区二区免费在线观看| 欧美一卡2卡3卡4卡| 99re亚洲国产精品| 欧美性色黄大片| 成人黄色av网站在线| 91免费看片在线观看| 韩国视频一区二区| 一区二区三区免费观看| 日本欧美久久久久免费播放网| 一区二区三区四区蜜桃| 日韩高清一区在线| 粉嫩aⅴ一区二区三区四区| 免费欧美日韩国产三级电影| 九九**精品视频免费播放| 亚洲午夜三级在线| 国产精品日产欧美久久久久| 精品免费99久久| 欧美一区二区视频在线观看2020| 久久嫩草精品久久久精品| 亚洲综合免费观看高清完整版 | 亚洲一区二区三区在线| 秋霞国产午夜精品免费视频| 国产99久久久久久免费看农村| 91高清在线观看| 91亚洲资源网| 欧美一区二区三区四区在线观看| 国产精品国产精品国产专区不蜜| 偷拍一区二区三区四区| 亚洲欧美在线aaa| 韩国一区二区三区| 欧美日韩五月天| 国产精品久久久久三级| 久久精品免费观看| 国产精品影音先锋| 国产精品自拍av| 91精品综合久久久久久| 7777精品久久久大香线蕉 | 在线免费观看日本一区| 国产精品美女久久久久久| 国内精品免费在线观看| 欧美乱妇一区二区三区不卡视频| 色综合一区二区| caoporen国产精品视频| 一本在线高清不卡dvd| 欧美综合天天夜夜久久| 国产精品久久久久三级| 成人黄色小视频| 久久久高清一区二区三区| 另类调教123区| 4hu四虎永久在线影院成人| 亚洲黄色免费网站| 精品一区二区三区视频| 欧美一卡2卡三卡4卡5免费| 日韩和欧美一区二区| 国产一区二区不卡| 日本精品一区二区三区高清| 亚洲人成电影网站色mp4| 99国产精品久久久久| 综合激情成人伊人| 日韩经典中文字幕一区| 欧美三级蜜桃2在线观看| 一区二区三区小说| 色综合天天综合网国产成人综合天| 中文字幕一区av| 在线精品视频免费播放| 亚洲天堂中文字幕| 欧洲一区二区三区在线| 洋洋成人永久网站入口| 欧美日韩一卡二卡三卡| 奇米精品一区二区三区在线观看 | 欧美精品一区二区久久婷婷| **欧美大码日韩| 色婷婷综合五月| 亚洲观看高清完整版在线观看 | 污片在线观看一区二区| 欧美一级理论片| 国产福利电影一区二区三区| 欧美极品aⅴ影院| 石原莉奈一区二区三区在线观看| 欧美精品一卡二卡| 久久国产综合精品| 2023国产精品| 日韩成人午夜精品| 2023国产精华国产精品| 激情五月婷婷综合网| 欧美激情在线免费观看| 色综合久久中文字幕| av网站一区二区三区| 亚洲欧美日韩国产综合| 欧美日韩美女一区二区| 国产九色精品成人porny| 亚洲精品乱码久久久久久| 69堂成人精品免费视频| 成人永久免费视频| 日韩午夜三级在线| 成人一区在线看| 亚洲gay无套男同| 日本黄色一区二区| 久久精品国产亚洲aⅴ| 亚洲天堂精品在线观看| 日韩欧美国产一区二区三区| 亚洲一级不卡视频| 久久久久青草大香线综合精品| 97精品国产露脸对白| 极品少妇xxxx精品少妇| 一区二区三区国产| 国产欧美精品一区二区色综合| 国产精品亚洲人在线观看| 一区二区在线观看不卡| 国产拍欧美日韩视频二区| 欧美电影在哪看比较好| 99久久精品国产一区二区三区| 久久精品国产色蜜蜜麻豆| 亚洲一区电影777| 日韩伦理av电影| 久久精品在线观看| 成人午夜免费av| 国产在线视频不卡二| 亚洲mv在线观看| 亚洲一区二区三区在线| 亚洲欧美激情视频在线观看一区二区三区| 日韩视频免费观看高清在线视频| 欧美精品久久天天躁| 在线免费观看成人短视频| 91色porny| 不卡一区二区在线| 成人午夜激情片| 国产精品一区二区黑丝| 久久99蜜桃精品| 蜜臀91精品一区二区三区| 国产日产欧美一区| 久久美女艺术照精彩视频福利播放| 欧美电影免费观看高清完整版在线| 91超碰这里只有精品国产| 欧美熟乱第一页| 欧美性做爰猛烈叫床潮| 欧美性生活影院| 欧美日韩一区二区三区不卡| 欧美丝袜丝交足nylons图片| 欧美日韩一区小说| 欧美精品亚洲二区| 欧美日韩和欧美的一区二区| 欧美精品在线一区二区三区| 欧美丰满美乳xxx高潮www| 日韩午夜激情免费电影| 欧美变态tickle挠乳网站| 久久综合狠狠综合| 国产清纯白嫩初高生在线观看91 | 洋洋av久久久久久久一区| 午夜欧美电影在线观看| 麻豆成人av在线| 国产成人精品网址| 91浏览器入口在线观看| 欧美巨大另类极品videosbest| 欧美xxxx老人做受| 2023国产精品自拍| 亚洲欧洲另类国产综合| 亚洲国产日日夜夜| 捆绑调教一区二区三区| 丁香啪啪综合成人亚洲小说| 色呦呦网站一区| 91精品国产免费久久综合| 国产日韩成人精品| 一区二区欧美视频| 韩国三级电影一区二区| 91小视频免费看| 日韩三级视频在线看| 亚洲高清在线视频| 精品亚洲成a人| 91成人网在线| 久久先锋影音av鲁色资源网| 亚洲四区在线观看| 日本午夜精品视频在线观看| 国产精品一区二区91| 色婷婷亚洲精品| 欧美精品一区二区三| 亚洲精品一二三四区| 激情图片小说一区| 91小宝寻花一区二区三区| 日韩美女天天操| 一区二区三区国产精华| 国产a区久久久| 欧美日韩小视频|