成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊網絡編程

網絡 網絡管理
把分布在不同地理區域的計算機與專門的外部設備用通信線路互連成一個規模大、功能強的網絡系統,從而使眾多的計算機可以方便地互相傳遞信息、共享硬件、軟件、數據信息等資源。

引入

【1】網絡編程:

把分布在不同地理區域的計算機與專門的外部設備用通信線路互連成一個規模大、功能強的網絡系統,從而使眾多的計算機可以方便地互相傳遞信息、共享硬件、軟件、數據信息等資源。

設備之間在網絡中進行數據的傳輸,發送/接收數據。

【2】通信兩個重要的要素:IP+PORT

【3】設備之間進行傳輸的時候,必須遵照一定的規則 ---》通信協議:

【4】TCP協議:可靠的

建立連接: 三次握手

釋放連接:四次揮手

【5】UDP協議:不可靠的

基于TCP協議的網絡通信-創建客戶端

【1】調用Dial函數:(net包下)

【2】代碼:

package main

import (
	"fmt"
	//所需的網絡編程全部都在net包下
	"net"
)

func main()  {
	fmt.Println("客戶端啟動...")
	//調用Dial函數:參數需要指定tcp協議,需要指定服務器端的IP+PORT
	conn,err := net.Dial("tcp","101.201.48.167:80")
	if err != nil {
		fmt.Println("客戶端連接失敗:err:",err)
		return
	}
	fmt.Println("連接成功,conn:",conn)
}

基于TCP協議的網絡通信-創建服務器端

【1】進行監聽:(Listen函數在net包下)

【2】代碼:

package main

import (
	"fmt"
	"net"
)

func main()  {
	fmt.Println("服務端啟動了...")
	listen,err := net.Listen("tcp","127.0.0.1:8888")
	if err != nil {
		fmt.Println("監聽失敗,err:",err)
		return 
	}

	for{
		conn,err2 := listen.Accept()
		if err2 != nil {
			fmt.Println("客戶端的等待失敗,err2:",err2)
		}else {
			fmt.Printf("等待連接成功,con=%v,接收到的客戶端信息:%v \n",conn,conn.RemoteAddr().String())
		}
	}
}

基于TCP協議的網絡通信-處理終端數據

【1】客戶端發送數據:

package main

import (
	"fmt"
	//所需的網絡編程全部都在net包下
	"net"
	"bufio"
	"os"
)

func main()  {
	fmt.Println("客戶端啟動...")
	//調用Dial函數:參數需要指定tcp協議,需要指定服務器端的IP+PORT
	conn,err := net.Dial("tcp","127.0.0.1:8888")
	if err != nil {
		fmt.Println("客戶端連接失敗:err:",err)
		return
	}
	fmt.Println("連接成功,conn:",conn)

	//通過客戶端發送單行數據,然后退出:
	reader := bufio.NewReader(os.Stdin)
	
	//從終端讀取一行用戶輸入的信息:
	str,err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("終端輸入失敗,err",err)
	}
	
	//將str數據發送給服務器:
	n,err := conn.Write([]byte(str))
	if err != nil {
		fmt.Println("連接失敗,err:",err)
	}
	fmt.Printf("終端數據通過客戶端發送成功,一共發送了%d字節的數據,并退出",n)
}

【2】服務器端接收數據:

package main

import (
	"fmt"
	"net"
)

func process(conn net.Conn)  {
	//連接用完一定要關閉:
	defer conn.Close()
	for {
		//創建一個切片,準備:將讀取的數據放入切片
		buf := make([]byte, 1024)

		//從conn連接中讀取數據:
		n,err := conn.Read(buf)
		if err != nil {
			return
		}
		//將讀取內容在服務器端輸出:
		fmt.Println(string(buf[0:n]))
	}
}

func main()  {
	fmt.Println("服務端啟動了...")
	listen,err := net.Listen("tcp","127.0.0.1:8888")
	if err != nil {
		fmt.Println("監聽失敗,err:",err)
		return 
	}

	for{
		conn,err2 := listen.Accept()
		if err2 != nil {
			fmt.Println("客戶端的等待失敗,err2:",err2)
		}else {
			fmt.Printf("等待連接成功,con=%v,接收到的客戶端信息:%v \n",conn,conn.RemoteAddr().String())
		}
		//準備一個協程,協程處理客戶端服務請求:
		//不同的客戶端的請求,連接conn不一樣的
		go process(conn)
	}
}
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-07-11 08:34:25

參數流程類型

2023-07-04 13:36:00

同步工具類Phaser

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2023-09-10 21:42:31

2022-05-24 08:21:16

數據安全API

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2024-02-19 10:11:00

Kubernetes網絡模型

2023-11-29 07:10:50

python協程異步編程

2023-03-26 23:47:32

Go內存模型

2022-02-23 08:41:58

NATIPv4IPv6

2024-11-28 09:57:50

C#事件發布器

2021-08-12 07:49:24

mysql

2023-07-24 09:41:08

自動駕駛技術交通

2022-10-08 00:00:05

SQL機制結構

2024-07-26 09:47:28

2022-09-22 08:06:29

計算機平板微信

2022-11-12 12:33:38

CSS預處理器Sass

2022-01-04 12:08:46

設計接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人一区二区在线 | 91传媒在线观看 | 精品天堂| 在线观看成人小视频 | 亚洲先锋影音 | 黄网站免费在线看 | 亚洲综合视频 | 亚洲人人 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产日韩欧美在线观看 | 一区天堂| 久草在线 | a级大片免费观看 | 亚洲不卡在线视频 | 国产一区二区三区免费 | 九九综合九九 | 一级欧美日韩 | 亚洲精久久久 | 成人性生交大片免费看中文带字幕 | 韩国主播午夜大尺度福利 | 夜夜夜夜夜夜曰天天天 | a级片在线观看 | 亚洲视频在线播放 | 欧美aaaaaaaaaa| 久久精品16 | 日韩欧美亚洲综合 | 日韩一区二区三区视频 | 成人在线精品 | 午夜噜噜噜 | 国产精品无 | 国产精品欧美一区二区三区不卡 | 国产精品视频在线播放 | 亚洲精品在线免费 | 波多野结衣在线观看一区二区三区 | 国产精品久久久久久久久久久久 | 在线观看成年视频 | 欧美日韩成人一区二区 | 午夜国产一区 | 一区二区视频在线观看 | 国产乱码久久久久久一区二区 | 国产有码 |