欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang中net的tcp服務(wù)使用

 更新時(shí)間:2022年04月14日 16:28:05   作者:zhijie  
這篇文章主要介紹了golang中net的tcp服務(wù)使用,文章通過服務(wù)端監(jiān)聽端口 展開主題的詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的 小伙伴可以參考一下

服務(wù)端監(jiān)聽端口 listen()

方法:net.listen({監(jiān)聽類型},{監(jiān)聽的ip和端口})(conn, err){}

返回值:conn是監(jiān)聽的對(duì)象,有獲取消息關(guān)閉監(jiān)聽等方法err錯(cuò)誤信息,如果沒有錯(cuò)誤信息值為nil

import ("net"
"fmt"
)
conn,err := net.Lisien("tcp","127.0.0.1:8082")
if err != nil{
 ?fmt.Println("鏈接失敗,錯(cuò)誤信息為:"+err)
}

接受客戶端的鏈接conn.Accept()

方法:conn.Accept() (newConn,err){} 返回值: newConn客戶端的鏈接對(duì)象,類型為net.Conn.存放了客戶端的鏈接信息,和與客戶端交互的方法.err存放錯(cuò)誤,如果沒有錯(cuò)誤信息值為nil 注意點(diǎn): Accept()方法會(huì)阻塞,直到有鏈接過來

//  ...上面的代碼...
// 因?yàn)榭蛻舳说逆溄硬恢挂粋€(gè),需要一直監(jiān)聽,所以加個(gè)死循環(huán)
for{
    newConn,err := conn.Accept()
    if err != nil{
        fmt.Println(err)
    }
 ? ?go handler(newConn)
}
?
// 客戶端連接后處理邏輯
func handler(newConn net.Conn){
 ? ?// TODO
}

接收客戶端發(fā)過來的數(shù)據(jù)newConn.Read()

方法:newConn.Read(msg)(num,err){}

返回值: num數(shù)據(jù)內(nèi)容的長(zhǎng)度,單位字節(jié)err錯(cuò)誤信息,如果沒有錯(cuò)誤信息值為nil

注意點(diǎn): 參數(shù)msg是一個(gè)byte類型的切片,用來保存客戶端發(fā)送的數(shù)據(jù)。Read方法同樣會(huì)阻塞??!

// ...上上邊代碼補(bǔ)充...
// 客戶端連接后處理邏輯
func handler(newConn net.Conn){
 ? ?for{
 ? ? ? ?// 新建一個(gè)位置用于存放客戶端數(shù)據(jù)
 ? ? ? ?msg := make([]byte,1024)
 ? ? ? ?num,err := newConn.Read(msg)
 ? ? ? ?if err != nil{
 ? ? ? ? ? ?// 打印錯(cuò)誤信息
 ? ? ?  }
 ? ? ? ?fmt.Println("客戶端消息:"+msg)
 ?  }
 ? ?
}

獲取客戶端的IP地址newConn.RemoteAddr().String()

// 獲取ip地址,轉(zhuǎn)為之字符串
newConn.RemoteAddr().String()

向客戶端發(fā)送數(shù)據(jù)newConn.Write()

方法:newConn.Write(msg){}

參數(shù):msg類型為[]byte

注意點(diǎn):需要把待發(fā)送的字符串轉(zhuǎn)為byte切片類型

newConn.Write([]bye("你好世界,helloworld1"))

關(guān)閉客戶端連接newConn.Close()

方法: newConn.Close(){}

在客戶端連接的返回的對(duì)象上調(diào)用Close()方法即可

newConn.Close()

客戶端連接tpc服務(wù)端

連接服務(wù)端net.Dial()

方法: net.Dial({連接類型},{地址})(conn,err){}

放回值: conn連接成功后的連接對(duì)象,err連接出錯(cuò)時(shí)的錯(cuò)誤信息,如果沒有錯(cuò)誤信息,返回nil

// 建立tcp連接
package main
import (
 ? ?"net"
 ? ?"fmt"
)
Ip,Port := "127.0.0.1",8081
conn,err := net.Dial("tcp",fmt.Sprintf("%s:%d",Ip,Port))
if err != nil{
 ? ?fmt.Println("net.Dial 錯(cuò)誤:",err)
 ? ?return nil
}
if(conn == nil){
 ? ?fmt.Println(">>>>>>>>連接錯(cuò)誤")
 ? ?return
}
fmt.Println(">>>>>>>>連接成功")

運(yùn)行: 

到此這篇關(guān)于golang中net的tcp服務(wù)使用的文章就介紹到這了,更多相關(guān)net的tcp服務(wù)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang逐行讀取文件的操作

    golang逐行讀取文件的操作

    這篇文章主要介紹了golang逐行讀取文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 一文深入探討Go語言中的if-else語句

    一文深入探討Go語言中的if-else語句

    在Go語言中,條件語句的使用方式相對(duì)簡(jiǎn)潔明了,所以本文將探討一下如何在Go程序中有效地進(jìn)行條件判斷和邏輯控制,感興趣的小伙伴可以了解下
    2023-08-08
  • go語言中讀取配置文件的方法總結(jié)

    go語言中讀取配置文件的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了go語言中讀取配置文件的幾個(gè)常見方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下
    2023-08-08
  • goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn)

    goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn)

    本文主要介紹了goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 一文帶你深入理解Go語言中的sync.Cond

    一文帶你深入理解Go語言中的sync.Cond

    sync.Cond?表示的是條件變量,它是一種同步機(jī)制,用來協(xié)調(diào)多個(gè)?goroutine?之間的同步。本文將通過示例為大家介紹Go語言中sync.Cond的使用,需要的可以參考一下
    2023-01-01
  • go語言題解LeetCode989數(shù)組形式的整數(shù)加法

    go語言題解LeetCode989數(shù)組形式的整數(shù)加法

    這篇文章主要為大家介紹了go語言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • golang類型轉(zhuǎn)換組件Cast的使用詳解

    golang類型轉(zhuǎn)換組件Cast的使用詳解

    這篇文章主要介紹了golang類型轉(zhuǎn)換組件Cast的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用golang,感興趣的朋友可以了解下
    2021-02-02
  • Go類型斷言提取測(cè)試接口值動(dòng)態(tài)類型及靜態(tài)轉(zhuǎn)換確保類型接口編譯安全

    Go類型斷言提取測(cè)試接口值動(dòng)態(tài)類型及靜態(tài)轉(zhuǎn)換確保類型接口編譯安全

    這篇文章主要為大家介紹了Go類型斷言提取測(cè)試接口值動(dòng)態(tài)類型及靜態(tài)轉(zhuǎn)換確保類型實(shí)現(xiàn)特定接口的編譯時(shí)安全性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    進(jìn)制轉(zhuǎn)換是人們利用符號(hào)來計(jì)數(shù)的方法,進(jìn)制轉(zhuǎn)換由一組數(shù)碼符號(hào)和兩個(gè)基本因素“基數(shù)”與“位權(quán)”構(gòu)成,這篇文章主要給大家介紹了關(guān)于Golang如何實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換62進(jìn)制的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí)學(xué)習(xí),下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • GO中的條件變量sync.Cond詳解

    GO中的條件變量sync.Cond詳解

    條件變量是基于互斥鎖的,它必須基于互斥鎖才能發(fā)揮作用,條件變量的初始化離不開互斥鎖,并且它的方法有點(diǎn)也是基于互斥鎖的,這篇文章主要介紹了GO的條件變量sync.Cond,需要的朋友可以參考下
    2023-01-01

最新評(píng)論