美文网首页
Go语言的网络编程

Go语言的网络编程

作者: 陈光环_18 | 来源:发表于2021-02-01 08:36 被阅读0次

socket编程

Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。电脑上运行的应用程序通常通过”套接字”向网络发出请求或者应答网络请求。

socket图解

Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket后面,对用户来说只需要调用Socket规定的相关函数,让Socket去组织符合指定的协议数据然后进行通信。

Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求

常用的Socket类型有两种:流式Socket和数据报式Socket,流式是一种面向连接的Socket,针对于面向连接的TCP服务应用,数据报式Socket是一种无连接的Socket,针对于无连接的UDP服务应用

TCP:比较靠谱,面向连接,比较慢                                              UDP:不是太靠谱,比较快

举个例子:TCP就像货到付款的快递,送到家还必须见到你人才算一整套流程。UDP就像某快递快递柜一扔就走管你收到收不到,一般直播用UDP。

TCP协议

TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。

TCP服务端

一个TCP服务端可以同时连接很多个客户端,例如世界各地的用户使用自己电脑上的浏览器访问淘宝网。因为Go语言中创建多个goroutine实现并发非常方便和高效,所以我们可以每建立一次链接就创建一个goroutine去处理。

TCP服务端程序的处理流程:

    1.监听端口

    2.接收客户端请求建立链接

    3.创建goroutine处理链接。

UDP协议

UDP协议(User Datagram Protocol)中文名称是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时序的通信,但是UDP协议的实时性比较好,通常用于视频直播相关领域。

http编程

Web服务器的工作原理可以简单地归纳为:

        客户机通过TCP/IP协议建立到服务器的TCP连接

        客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档

        服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端

        客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果

HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议

HTTP协议通常承载于TCP协议之上

WebSocket编程

WebSocket是一种在单个TCP连接上进行全双工通信的协议

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据

在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输

需要安装第三方包:

cmd中:go get -u -v github.com/gorilla/websocket

相关文章

  • go语言学习

    基础 go的学习,感谢Go By Example、go网络编程与go语言标准库随着学习的深入,此文章持续更新......

  • Go语言 网络编程

    TCP编程 服务器端代码 客户端代码 客户端循环输入,输入exit结束 Server代码 Client代码

  • Go语言的网络编程

    socket编程 Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一...

  • Go语法指南

    出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...

  • Go 语言学习技巧和编程思维

    Go 语言学习技巧和编程思维 一、了解 Go 语言 了解 Go 语言背景 学习 Go 语言,首先要了解 Go 语言...

  • GO语言能否取代C/C++呢?它们的区别在哪呢?

    前言: 随着网络技术的发展,有越来越多的编程语言出现,虽然老牌编程语言势头仍然强劲,不过也难以抵挡像GO语言这样的...

  • Go语言的网络编程简介

    本文通过 Go 语言写几个简单的通信示例,从 TCP 服务器过渡到 HTTP 开发,从而简单介绍 net 包的运用...

  • Go语言入坑

    GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...

  • QOR,用Go语言快速搭建CMS和电子商务的库

    Go语言,兼具语法简单、高并发、高性能的特点,在网络编程领域受到欢迎。(Go语言的介绍很多,就不再赘述,还不了解G...

  • 48.Go语言书籍

    Go语言圣经(中文版) Go语言高级编程(Advanced Go Programming https://godo...

网友评论

      本文标题:Go语言的网络编程

      本文链接:https://www.haomeiwen.com/subject/kwxjtltx.html