zoukankan      html  css  js  c++  java
  • golang 使用kcp实例

    简介
    kcp的具体概念与定义自行百度,特性可以浓缩为一句话,和tcp一样可靠,速度比tcp快,是一个用带宽换速度的新型协议。
    网上的示例代码很少,特此写一篇golang下的kcp实例。

    PS
    本文仅对ksp在golang下的基本使用进行示例,具体调优参数需要使用者去官网寻找适配。
    官方的示例代码太长太花了,特意简约地贴出最简单的写法
    仓库
    主仓库: https://github.com/xtaci/kcp-go
    示例代码: https://github.com/fwhezfwhez/TestX/tree/master/test_kcp/basic
    一些调优参数的配置: https://github.com/fwhezfwhez/TestX/blob/master/test_kcp/official/server/main.go 195行-323行

    预览
    服务端:
    package main

    import (
    "fmt"
    "github.com/fwhezfwhez/errorx"
    "github.com/xtaci/kcp-go"
    "io"
    "net"
    )

    func main() {
    fmt.Println("kcp listens on 10000")
    lis, err := kcp.ListenWithOptions(":10000", nil, 10, 3)
    if err!=nil {
    panic(err)
    }
    for {
    conn, e :=lis.AcceptKCP()
    if e!=nil {
    panic(e)
    }
    go func(conn net.Conn){
    var buffer = make([]byte,1024,1024)
    for {
    n,e :=conn.Read(buffer)
    if e!=nil {
    if e == io.EOF {
    break
    }
    fmt.Println(errorx.Wrap(e))
    break
    }

    fmt.Println("receive from client:", buffer[:n])
    }
    }(conn)
    }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    客户端
    package main

    import "github.com/xtaci/kcp-go"

    func main() {
    kcpconn, err := kcp.DialWithOptions("localhost:10000", nil, 10, 3)
    if err!=nil {
    panic(err)
    }

    kcpconn.Write([]byte("hello kcp.emmmmmmmmmmmmmmm"))
    select {}
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    该库的kcp服务端不存在拆包问题,客户端连续发送消息 [0,1,2,3,4] [7,8,9],服务端会两次循环(buffer足够大)内读到[0,1,2,3,4,5] [7,8,9] 而不是 [0,1,2,3,4,5,6,7,8,9]
    ————————————————
    版权声明:本文为CSDN博主「fwhezfwhez」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/fwhezfwhez/article/details/89714434

  • 相关阅读:
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言|博客作业05
    C语言I博客作业04
    【lhyaaa】2020深圳大湾区比赛总结
  • 原文地址:https://www.cnblogs.com/ExMan/p/11867131.html
Copyright © 2011-2022 走看看