2023-08-10 10:19:21來(lái)源:今日頭條
(資料圖片)
把分布在不同地理區(qū)域的計(jì)算機(jī)與專(zhuān)門(mén)的外部設(shè)備用通信線路互連成一個(gè)規(guī)模大、功能強(qiáng)的網(wǎng)絡(luò)系統(tǒng),從而使眾多的計(jì)算機(jī)可以方便地互相傳遞信息、共享硬件、軟件、數(shù)據(jù)信息等資源。
設(shè)備之間在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)的傳輸,發(fā)送/接收數(shù)據(jù)。
【2】通信兩個(gè)重要的要素:IP+PORT【3】設(shè)備之間進(jìn)行傳輸?shù)臅r(shí)候,必須遵照一定的規(guī)則 ---》通信協(xié)議:【4】TCP協(xié)議:可靠的建立連接: 三次握手
釋放連接:四次揮手
【5】UDP協(xié)議:不可靠的基于TCP協(xié)議的網(wǎng)絡(luò)通信-創(chuàng)建客戶(hù)端【1】調(diào)用Dial函數(shù):(net包下)【2】代碼:package mainimport ("fmt"http://所需的網(wǎng)絡(luò)編程全部都在net包下"net")func main() {fmt.Println("客戶(hù)端啟動(dòng)...")//調(diào)用Dial函數(shù):參數(shù)需要指定tcp協(xié)議,需要指定服務(wù)器端的IP+PORTconn,err := net.Dial("tcp","101.201.48.167:80")if err != nil {fmt.Println("客戶(hù)端連接失敗:err:",err)return}fmt.Println("連接成功,conn:",conn)}
基于TCP協(xié)議的網(wǎng)絡(luò)通信-創(chuàng)建服務(wù)器端【1】進(jìn)行監(jiān)聽(tīng):(Listen函數(shù)在net包下)【2】代碼:package mainimport ("fmt""net")func main() {fmt.Println("服務(wù)端啟動(dòng)了...")listen,err := net.Listen("tcp","127.0.0.1:8888")if err != nil {fmt.Println("監(jiān)聽(tīng)失敗,err:",err)return }for{conn,err2 := listen.Accept()if err2 != nil {fmt.Println("客戶(hù)端的等待失敗,err2:",err2)}else {fmt.Printf("等待連接成功,con=%v,接收到的客戶(hù)端信息:%v \n",conn,conn.RemoteAddr().String())}}}
基于TCP協(xié)議的網(wǎng)絡(luò)通信-處理終端數(shù)據(jù)【1】客戶(hù)端發(fā)送數(shù)據(jù):package mainimport ("fmt"http://所需的網(wǎng)絡(luò)編程全部都在net包下"net""bufio""os")func main() {fmt.Println("客戶(hù)端啟動(dòng)...")//調(diào)用Dial函數(shù):參數(shù)需要指定tcp協(xié)議,需要指定服務(wù)器端的IP+PORTconn,err := net.Dial("tcp","127.0.0.1:8888")if err != nil {fmt.Println("客戶(hù)端連接失?。篹rr:",err)return}fmt.Println("連接成功,conn:",conn)//通過(guò)客戶(hù)端發(fā)送單行數(shù)據(jù),然后退出:reader := bufio.NewReader(os.Stdin)//從終端讀取一行用戶(hù)輸入的信息:str,err := reader.ReadString("\n")if err != nil {fmt.Println("終端輸入失敗,err",err)}//將str數(shù)據(jù)發(fā)送給服務(wù)器:n,err := conn.Write([]byte(str))if err != nil {fmt.Println("連接失敗,err:",err)}fmt.Printf("終端數(shù)據(jù)通過(guò)客戶(hù)端發(fā)送成功,一共發(fā)送了%d字節(jié)的數(shù)據(jù),并退出",n)}
【2】服務(wù)器端接收數(shù)據(jù):package mainimport ("fmt""net")func process(conn net.Conn) {//連接用完一定要關(guān)閉:defer conn.Close()for {//創(chuàng)建一個(gè)切片,準(zhǔn)備:將讀取的數(shù)據(jù)放入切片buf := make([]byte, 1024)//從conn連接中讀取數(shù)據(jù):n,err := conn.Read(buf)if err != nil {return}//將讀取內(nèi)容在服務(wù)器端輸出:fmt.Println(string(buf[0:n]))}}func main() {fmt.Println("服務(wù)端啟動(dòng)了...")listen,err := net.Listen("tcp","127.0.0.1:8888")if err != nil {fmt.Println("監(jiān)聽(tīng)失敗,err:",err)return }for{conn,err2 := listen.Accept()if err2 != nil {fmt.Println("客戶(hù)端的等待失敗,err2:",err2)}else {fmt.Printf("等待連接成功,con=%v,接收到的客戶(hù)端信息:%v \n",conn,conn.RemoteAddr().String())}//準(zhǔn)備一個(gè)協(xié)程,協(xié)程處理客戶(hù)端服務(wù)請(qǐng)求://不同的客戶(hù)端的請(qǐng)求,連接conn不一樣的go process(conn)}}
關(guān)鍵詞:
引入【1】網(wǎng)絡(luò)編程:把分布在不同地理區(qū)域的計(jì)算機(jī)與專(zhuān)門(mén)的外部設(shè)備用
提升RabbitMQ系統(tǒng)的穩(wěn)定性是確保消息隊(duì)列系統(tǒng)能夠持續(xù)可靠地運(yùn)行的關(guān)鍵
從輸出維度的角度來(lái)看,基于視覺(jué)傳感器的感知方法可以分為2D感知和3D感
猶記得《人世間》時(shí)期就有人感嘆,到底是哪個(gè)男人能修得八輩子的福氣,
石家莊圖書(shū)批發(fā)市場(chǎng)公交路線,石家莊圖書(shū)批發(fā)市場(chǎng)這個(gè)很多人還不知道,
北京市氣象臺(tái)8月10日6時(shí)發(fā)布:今天早晨到白天陰有分散性陣雨或雷陣雨轉(zhuǎn)
截至2023年8月9日收盤(pán),微電生理(688351)報(bào)收于16 21元,上漲1 5%,換
Q產(chǎn)品線中的新頂級(jí)型號(hào)即將面世。新款?yuàn)W迪RSQ8的輸出功率為591bhp,將R
8月8日18時(shí)30分許,軋道機(jī)車(chē)緩緩?fù)ㄟ^(guò)豐沙鐵路珠窩站,標(biāo)志著豐沙鐵路經(jīng)
幼兒園因放假預(yù)扣教師社保費(fèi) 法院認(rèn)為此舉違法 應(yīng)支付經(jīng)濟(jì)補(bǔ)償金
8月9日,鵬華優(yōu)勢(shì)企業(yè)最新單位凈值為1 7202元,累計(jì)凈值為1 7202元,較
湖南日?qǐng)?bào)·新湖南客戶(hù)端8月9日訊(記者王晗實(shí)習(xí)生鄒敏丹)今天上午,“
來(lái)為大家解答以上的問(wèn)題。衛(wèi)生間馬桶預(yù)留尺寸75,衛(wèi)生間馬桶預(yù)留尺寸這
智通財(cái)經(jīng)APP訊,中國(guó)人民保險(xiǎn)集團(tuán)(01339)發(fā)布公告,2023年6月19日,公
證券時(shí)報(bào)?數(shù)據(jù)寶統(tǒng)計(jì),長(zhǎng)實(shí)集團(tuán)在港交所公告顯示,8月9日以每股43 000