当前位置: 首页 > wzjs >正文

网站二级目录打不开几分钟做网站

网站二级目录打不开,几分钟做网站,浏览广告赚佣金的app,wordpress author 1主要原因就是tcp数据传递模式是流模式,在保持长连接的时候可以进行多次的收和发。 “粘包"可发生在发送端也可发生在接收端: 由Nagle算法造成的发送端的粘包:Nagle算法是一种改善网络传输效率的算法。简单来说就是当我们提交一段数据给…

主要原因就是tcp数据传递模式是流模式,在保持长连接的时候可以进行多次的收和发。

“粘包"可发生在发送端也可发生在接收端:

  1. 由Nagle算法造成的发送端的粘包:Nagle算法是一种改善网络传输效率的算法。简单来说就是当我们提交一段数据给TCP发送时,TCP并不立刻发送此段数据,而是等待一小段时间看看在等待期间是否还有要发送的数据,若有则会一次把这两段数据发送出去。
  2. 接收端接收不及时造成的接收端粘包:TCP会把接收到的数据存在自己的缓冲区中,然后通知应用层取数据。当应用层由于某些原因不能及时的把TCP的数据取出来,就会造成TCP缓冲区中存放了几段数据。

解决办法

出现"粘包"的关键在于接收方不确定将要传输的数据包的大小,因此我们可以对数据包进行封包和拆包的操作。

封包:封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了(过滤非法包时封包会加入"包尾"内容)。包头部分的长度是固定的,并且它存储了包体的长度,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包。

我们可以自己定义一个协议,比如数据包的前4个字节为包头,里面存储的是发送的数据的长度。

protocol包:

package protocolimport ("bufio""bytes""encoding/binary"
)// Encode 将消息编码
func Encode(message string) ([]byte, error) {// 读取消息的长度,转换成int32类型(占4个字节)var length = int32(len(message))var pkg = new(bytes.Buffer)// 写入消息头err := binary.Write(pkg, binary.LittleEndian, length)if err != nil {return nil, err}// 写入消息实体err = binary.Write(pkg, binary.LittleEndian, []byte(message))if err != nil {return nil, err}return pkg.Bytes(), nil
}// Decode 解码消息
func Decode(reader *bufio.Reader) (string, error) {// 读取消息的长度lengthByte, _ := reader.Peek(4) // 读取前4个字节的数据lengthBuff := bytes.NewBuffer(lengthByte)var length int32err := binary.Read(lengthBuff, binary.LittleEndian, &length)if err != nil {return "", err}// Buffered返回缓冲中现有的可读取的字节数。if int32(reader.Buffered()) < length+4 {return "", err}// 读取真正的消息数据pack := make([]byte, int(4+length))_, err = reader.Read(pack)if err != nil {return "", err}return string(pack[4:]), nil
}

客户端:

func main() {conn, err := net.Dial("tcp", "127.0.0.1:30000")if err != nil {fmt.Println("dial failed, err", err)return}defer conn.Close()for i := 0; i < 20; i++ {msg := `Hello, Hello. How are you?`data, err := proto.Encode(msg)if err != nil {fmt.Println("encode msg failed, err:", err)return}conn.Write(data)}
}

服务器:

package mainimport ("bufio""fmt""io""net"proto "studygo/studygo/tcp/protocol""sync"
)var wg sync.WaitGroupfunc process(conn net.Conn) {//与客户端通信defer conn.Close()reader := bufio.NewReader(conn)for {msg, err := proto.Decode(reader)if err == io.EOF {break}if err!=nil{fmt.Println("decode msg failed,err:",err)return}fmt.Println(msg)}}func main() {//本地端口启动服务listener, err := net.Listen("tcp", "127.0.0.1:8000")if err != nil {fmt.Println("listen failed,err:%v\n", err)return}defer listener.Close()for {//等待别人连接conn, err := listener.Accept()if err != nil {fmt.Println("accept failed,err:%v\n", err)return}go process(conn)}}

参考出处:Go语言基础之网络编程 | 李文周的博客


文章转载自:

http://dvjuqPrI.bktLy.cn
http://kH9VfqRn.bktLy.cn
http://eikL4v96.bktLy.cn
http://PS6z4diw.bktLy.cn
http://RbCeyJDz.bktLy.cn
http://eW0RDFjA.bktLy.cn
http://w1iF6A4F.bktLy.cn
http://1LMxvQkL.bktLy.cn
http://Q4XT39Ve.bktLy.cn
http://MpGGG9ng.bktLy.cn
http://j3lP9RI1.bktLy.cn
http://L0yx8bsQ.bktLy.cn
http://H2WeGln5.bktLy.cn
http://iDtpGzLH.bktLy.cn
http://tw2WRTDk.bktLy.cn
http://ka7srSbS.bktLy.cn
http://J1p1u4VP.bktLy.cn
http://sUhxoXrb.bktLy.cn
http://MXjTou3p.bktLy.cn
http://SbDR72Pw.bktLy.cn
http://LuAL2nN7.bktLy.cn
http://1auiOpuT.bktLy.cn
http://cAXFNhWo.bktLy.cn
http://maSzhqcf.bktLy.cn
http://c5doug2T.bktLy.cn
http://oGyxbkOv.bktLy.cn
http://VJnOzdSF.bktLy.cn
http://iPbX86Q1.bktLy.cn
http://52ypA38L.bktLy.cn
http://Ms7NywcZ.bktLy.cn
http://www.dtcms.com/wzjs/733672.html

相关文章:

  • 公司网站上传图库投资建设集团网站
  • 潍坊个人做网站旅游网站开发毕业设计论文
  • 网站 开发 价格网页布局设计技术包括
  • 建站魔方极速网站建设做网站用什么语言快
  • 仙居做网站在哪里做中国数控机床网
  • 汽车配件响应式网站家装公司加盟哪个公司好
  • 做设备开通哪个网站好宁波大型网站推广服务
  • 电商网站的模块网站利润
  • 河南手机网站建设多少钱北海网站设计公司
  • 服务号开发随州seo
  • 长沙网站制作培训商城网站建设开发多少钱
  • 网站特色怎么写广州室内设计公司排行榜
  • 网站后台发布文章横琴网站建设公司
  • 番禺建网站免费代理网址
  • 网站不备案可以么广州网站建设报价单
  • 沈阳网站页面设计公司建站赚钱灰色
  • 怎么使网站降权肇庆市场核酸检测
  • 中国制造网官方网站国际站wordpress 密码解密
  • 网站开发是做什么google seo实战教程
  • 大型电子商务网站建设试述网站建设应考虑哪些方面的问题
  • 企业的建站方式中国机械工业建设集团有限公司网站
  • 网站短信通知wordpress将404跳转主页
  • 医院网站建设价格ftp怎么上传网站
  • 架设网站 自己购买服务器网站建设成本图
  • 旅游网站规划设计自己想学做博客网站吗
  • 东莞网站建设部落上海线上引流推广
  • 网站seo具体怎么做?网盘建网站
  • 网站后台密码忘了怎么办网络开发语言的有哪些
  • 自己做的网站图片加载过慢建设银行的官方网站公告
  • 青龙建站教程自学网北京网站建设itcask