我们一起聊聊网络编程
2023-08-10 13:45:42 来源:今日头条
(资料图片)
把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。
设备之间在网络中进行数据的传输,发送/接收数据。
【2】通信两个重要的要素:IP+PORT【3】设备之间进行传输的时候,必须遵照一定的规则 ---》通信协议:【4】TCP协议:可靠的建立连接: 三次握手
释放连接:四次挥手
【5】UDP协议:不可靠的基于TCP协议的网络通信-创建客户端【1】调用Dial函数:(net包下)【2】代码:package mainimport ("fmt"//所需的网络编程全部都在net包下"net")func main() {fmt.Println("客户端启动...")//调用Dial函数:参数需要指定tcp协议,需要指定服务器端的IP+PORTconn,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 mainimport ("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 mainimport ("fmt"//所需的网络编程全部都在net包下"net""bufio""os")func main() {fmt.Println("客户端启动...")//调用Dial函数:参数需要指定tcp协议,需要指定服务器端的IP+PORTconn,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 mainimport ("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)}}
关键词:
相关阅读
-
我们一起聊聊网络编程
引入【1】网络编程:把分布在不同地理区域的计算机与专门的外部设备用 -
广清城际白云至广州北段用地获批!清远融...
近日,广州至清远城际轨道交通广州白云至广州北段项目获得用地批复,该 -
光遇8月10日每日任务攻略
光遇8月10日的每日任务来了,在这个任务中是有很多小伙伴是还不知道是 -
大型传奇刀刀切割满屏光柱手游大全推荐...
大型传奇刀刀切割满屏光柱手游大全是很多的玩家很喜欢的游戏的类型之一 -
石器时代手游《恐龙神奇宝贝》全民夺宝...
由机暴网络发行、以石器时代为背景的手游《恐龙神奇宝贝》今天8月10日 -
博德之门3野蛮人副职选择推荐
博德之门3野蛮人副职业推荐选择的就是战士,这个职业在总体上来说还是 -
史上最恐怖的密室逃脱游戏推荐 克苏鲁...
史上最恐怖的密室逃脱游戏是很多的玩家很喜欢的游戏的类型之一,在史上 -
最刺激的赛车竞速游戏推荐 漂移转弯的赛车
最刺激的赛车竞速游戏推荐是很多的玩家很喜欢的游戏的类型之一,在最刺 -
又一个“好爸爸”塌房!酗酒、家暴、深...
又一个“好爸爸”塌房!酗酒、家暴、深夜发疯、死缠前妻:我真的好... -
博得之门3狂乱打击的效果是什么
《博得之门3》是拉瑞安推出的一款角色冒险游戏,游戏最近新上线了正式 -
理想毛利率超越特斯拉,但投资者不买单...
2023年8月8日,公布截至6月30日2023年第二季度财报,这也是其上市以来 -
摆个摊,海底捞也杀入夜市!网红城市纷...
对此,海底捞相关人士回应称,海底捞确实在多地夜市摆了摊位,是门店结 -
悦康药业:8月9日融资买入161.75万元,...
8月9日,悦康药业(688658)融资买入161 75万元,融资偿还206 42万元, -
泰拉瑞亚羽落增益介绍
泰拉瑞亚羽落增益很多玩家都想了解,泰拉瑞亚中有形形色色的武器装备, -
武汉科技大学2023年在湖南物理类招生计划
武汉科技大学2023年在湖南物理类招生计划生源地年度招录类型招生批次专 -
盛邦安全:8月9日融券卖出20.36万股,融...
8月9日,盛邦安全(688651)融资买入1808 01万元,融资偿还2357 33万元 -
泰拉瑞亚怒气增益介绍
泰拉瑞亚怒气增益很多玩家都想了解,泰拉瑞亚中有形形色色的武器装备, -
华恒生物:8月9日融资买入129.24万元,...
8月9日,华恒生物(688639)融资买入129 24万元,融资偿还698 62万元, -
双元科技:8月9日融资买入258.21万元,...
8月9日,双元科技(688623)融资买入258 21万元,融资偿还483 33万元, -
双元科技:8月9日融资买入258.21万元,...
8月9日,双元科技(688623)融资买入258 21万元,融资偿还483 33万元,