Example #1
0
func (this *Server) Init() {
	// 创建两个端点的 kcp对象,第一个参数 conv是会话编号,同一个会话需要相同
	// 最后一个是 user参数,用来传递标识
	a := []byte{0}
	// b := []byte{1}
	this.kcp = ikcp.Ikcp_create(0x11223344, a)
	// kcp2 := Ikcp_create(0x11223344, b)

	this.kcp.Output = this.send
	// kcp2.Output = send

	// 配置窗口大小:平均延迟200ms,每20ms发送一个包,
	// 而考虑到丢包重发,设置最大收发窗口为128
	ikcp.Ikcp_wndsize(this.kcp, 128, 128)
	// Ikcp_wndsize(kcp2, 128, 128)

	// 默认模式
	ikcp.Ikcp_nodelay(this.kcp, 0, 10, 0, 0)
	// Ikcp_nodelay(kcp2, 0, 10, 0, 0)

	addr, err := net.ResolveUDPAddr("udp", ":9981")
	if err != nil {
		fmt.Println(err)
	}
	conn, err := net.ListenUDP("udp", addr)
	if err != nil {
		fmt.Println(err)
	}
	this.recv(conn)
}
Example #2
0
func (this *Server) Init() {
	// 创建两个端点的 kcp对象,第一个参数 conv是会话编号,同一个会话需要相同
	// 最后一个是 user参数,用来传递标识
	a := []byte{0}
	// b := []byte{1}
	this.kcp = ikcp.Ikcp_create(0x11223344, a)
	// kcp2 := Ikcp_create(0x11223344, b)

	this.kcp.Output = this.send
	// kcp2.Output = send

	// 配置窗口大小:平均延迟200ms,每20ms发送一个包,
	// 而考虑到丢包重发,设置最大收发窗口为128
	ikcp.Ikcp_wndsize(this.kcp, 128, 128)
	// Ikcp_wndsize(kcp2, 128, 128)

	// 默认模式
	ikcp.Ikcp_nodelay(this.kcp, 0, 10, 0, 0)
	// Ikcp_nodelay(kcp2, 0, 10, 0, 0)

	remotAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9981")
	if err != nil {
		fmt.Println(err.Error())
	}
	locaAddr, err := net.ResolveUDPAddr("udp", ":9980")
	if err != nil {
		fmt.Println(err.Error())
	}
	this.conn, err = net.ListenUDP("udp", locaAddr)
	if err != nil {
		fmt.Println(err.Error())
	}

	this.Send("hello word!")

	time.Sleep(100 * time.Second)

	// this.recv(conn)

}