日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang中的socket

發布時間:2025/6/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang中的socket 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

網絡的socket數據傳輸是一種特殊的I/O,socket也是一種文件描述符.socket也具有一個類似打開文件的函數調用:socket(),該函數返回有一個整形的socket描述符,隨后的連接建立,數據傳輸等操作都是通過它實現的

常用的socket類型有兩種:流式socket(SOCK_STREAM)和數據報式socket(SOCK_DGRAM)

  • 流式是一種面向連接的socket,針對面向連接的tcp服務應用
  • 數據報式socket是一種無連接的socket,對應于無連接的udp服務應用


listen創建的socket不用于通信,用于監聽地址的,accept的socket是用來通信的

read讀服務/客戶,有返回0,對端關閉和你連接了

函數

server端
Listen函數

func Listen(network, address string) (Listener, error)

network:tcp或者udp
address:ip端口號比如127.0.0.1:9194或者:8005

Listener接口

type Listener interface {Accept() (Conn, error)Close() errorAddr() Addr }

Conn接口

type Conn interface {Read(b []byte) (n int, err error)Write(b []byte) (n int, err error)Close() errorLocalAddr() AddrRemoteAddr() AddrSetDeadline(t time.Time) errorSetReadDeadline(t time.Time) errorSetWriteDeadline(t time.Time) error }

tcp服務代碼

func main() {listener, err := net.Listen("tcp", "0.0.0.0:8183")if err != nil {fmt.Println("err = ", err)return}//退出前把監聽關閉defer listener.Close()//阻塞等待用戶鏈接for {conn, err := listener.Accept()if err != nil {fmt.Println("err = ", err)continue}//接收用戶的請求//1024緩沖區buf := make([]byte, 1024)n, err1 := conn.Read(buf)if err1 != nil {fmt.Println("err1 = ", err1)continue}fmt.Println("buf = ", string(buf[:n]))//關閉當前用戶的連接defer conn.Close()} }

tcp客戶端

func main() {conn, err := net.Dial("tcp", "127.0.0.1:8183")if err != nil {fmt.Println("err = ", err)return}defer conn.Close()//發送數據conn.Write([]byte("are u ok?")) }

服務端多人

用nc做客戶端,telnet做客戶端好像會多傳東西

func HandleConn(conn net.Conn) {//獲取客戶端的網絡地址信息addr := conn.RemoteAddr().String()fmt.Println("連接成功: ", addr)//關閉連接defer conn.Close()buf := make([]byte, 2048)for {//讀取用戶數據,如果客戶端關閉了,好像是能發現這邊的n是等于0的n, err := conn.Read(buf)if err != nil {//客戶端意外關閉,也能發現fmt.Println("err = ", err)return}//打印數據fmt.Println("數據是: ", string(buf[:n]))//看里面多了哪些東西fmt.Println("長度是: ", len(string(buf[:n])))//因為客戶端傳遞來的有\nif "exit" == string(buf[:n-1]) {fmt.Println(addr, " exit")return}//把數據轉化為大寫再發送conn.Write([]byte(strings.ToUpper(string(buf[:n]))))} }func main() {listener, err := net.Listen("tcp", "0.0.0.0:8183")if err != nil {fmt.Println("err = ", err)return}//退出前把監聽關閉defer listener.Close()//阻塞等待用戶鏈接for {conn, err := listener.Accept()if err != nil {fmt.Println("err = ", err)return}//處理用戶請求go HandleConn(conn)} }

可輸入回復客戶端

func main() {conn, err := net.Dial("tcp", "127.0.0.1:8183")if err != nil {fmt.Println("net.Dial err = ", err)return}//main調用完畢,關閉連接defer conn.Close()//接收服務器回復的數據go func() {//從鍵盤輸入內容,給服務器發送內容str := make([]byte, 1024)for {n, err := os.Stdin.Read(str)if err != nil {fmt.Println("錯誤信息是: ", err)return}//把輸入的內容發給服務器conn.Write(str[:n])}}()//切片緩沖buf := make([]byte, 1024)for {//如果服務端關閉和你連接,這邊的n是能讀取到0的n, err := conn.Read(buf)if err != nil {fmt.Println("錯誤信息是: ", err)return}fmt.Println(string(buf[:n]))} }

總結

以上是生活随笔為你收集整理的golang中的socket的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品亚洲天堂 | 不卡欧美 | www.国产一区二区三区 | 久久久久久少妇 | 国产 一二三四五六 | 精品久久一区 | 浪漫樱花动漫在线观看免费 | 亚洲第一天堂久久 | 玩弄丰满少妇xxxxx性多毛 | 色婷婷社区 | 欧美在线观看一区 | 成人免费短视频 | 美日韩一级 | 亚洲女人被黑人巨大进入 | 亲子乱对白乱都乱了 | 欧美高清不卡 | 亚洲激情在线观看 | 蜜桃99视频一区二区三区 | 原神女裸体看个够无遮挡 | 超碰97成人 | 久久亚洲综合国产精品99麻豆精品福利 | 色婷婷av一区二区三区在线观看 | 精品无码人妻一区二区免费蜜桃 | 久久人人精品 | 男男做性免费视频网 | 欧美在线中文字幕 | 男女做爰真人视频直播 | 韩国av一区二区三区 | 日本一级吃奶淫片免费 | 福利视频一区二区 | 婷婷色中文字幕 | 91日韩在线 | 午夜三级av | 国产精品16p | 日韩av无码久久 | 欧美性白人极品1819hd | 成av人在线| 日韩欧美成人免费视频 | 日韩黄色大片 | 蜜臀久久精品久久久用户群体 | 人妻熟女一区二区aⅴ水 | 欧美黄色免费大片 | 日韩专区在线观看 | 精品久久91 | 中文字幕欧美亚洲 | 黄色网页在线观看 | 新版红楼梦在线高清免费观看 | 福利电影一区 | 精品影片一区二区入口 | 性欧美大战久久久久久久久 | 亚州激情视频 | 国产微拍一区 | 国产传媒视频 | 欧美黄色短视频 | 久久久精彩视频 | 国产精品久久久久久三级 | 性生活视频在线播放 | 91成人精品国产刺激国语对白 | 亚洲天堂一区二区在线 | 加勒比久久综合 | 日本乱偷中文字幕 | 国产日韩欧美视频在线观看 | 黄频在线免费观看 | 韩国av一区二区三区 | 免费看黄色网 | 欧美福利视频一区二区 | 久久99网站 | 亚洲黄色小说网 | 黄色片网战 | 污污网站在线免费观看 | 老湿机69福利区午夜x片 | 乱码一区二区三区 | 精品久久国产字幕高潮 | 亚洲一区欧洲一区 | www色网站| 日韩欧美一区二区三区在线 | 日本一级网站 | 欧美 日韩 国产 在线 | 欧美日本精品 | 精品视频国产 | 国产视频一区二区 | 亚洲综合图片网 | 国产αv | 完全免费av| 日韩av一二区 | 黄色a级片在线观看 | 黄色三级在线播放 | 日韩综合在线视频 | 青青在线视频观看 | 国产午夜片 | www视频在线观看网站 | 影视av| 高h调教冰块play男男双性文 | 国内自拍偷拍网 | 六月婷婷在线观看 | 天天干天天色综合 | 九一国产在线观看 | 在线能看的av | 人人插人人干 |