Categorygithub.com/ctfang/tcp-server
modulepackage
0.1.2
Repository: https://github.com/ctfang/tcp-server.git
Documentation: pkg.go.dev

# README

tcp 服务实现

go get github.com/ctfang/tcp-server

数据帧(Data Framing)

type Frame struct {
	// < 126 这个数用来表示传输数据的长度
	// == 126 2个字节表示的是一个16进制无符号数,这个数用来表示传输数据的长度
	// == 127 8个字节表示的一个64位无符合数,这个数用来表示传输数据的长度
	PayloadLen int
	Payload    []byte
}

如何使用

server.go

package main

import (
	"github.com/ctfang/tcp-server"
	"log"
	"time"
)

func main() {
	server := tcp.NewServer(":7777")
	server.SetEvent(&e{s: server})
	server.Run()
}

type e struct {
	s *tcp.Server
}

func (e *e) OnConnect(connect *tcp.Connect) {
	go func() {
		for true {
			e.s.Range(func(key, value any) bool {
				id := key.(string)
				connect.Write([]byte("client = " + id))
				return true
			})
			time.Sleep(1 * time.Second)
		}
	}()
}

func (*e) OnMessage(connect *tcp.Connect, frame tcp.Frame) {
	log.Println(string(frame.Payload))
}

func (*e) OnClose(connect *tcp.Connect) {
	log.Println("OnClose")
}

func (*e) OnError(err error) {
	log.Println("OnError")
}

client.go

package main

import (
	"github.com/ctfang/tcp-server"
	"log"
)

func main() {
	server := tcp.NewClient("127.0.0.1:7777")
	server.SetEvent(&e{})
	server.Run()
}

type e struct{}

func (*e) OnConnect(connect *tcp.Connect) {
	log.Println("ok")

	connect.Write([]byte("form client message"))
}

func (*e) OnMessage(connect *tcp.Connect, msg tcp.Frame) {
	log.Println("OnMessage", string(msg.Payload))
}

func (*e) OnClose(connect *tcp.Connect) {
	log.Println("OnClose")
}

func (*e) OnError(err error) {
	log.Println("OnError")
}

# Packages

No description provided by the author

# Functions

NewClient service := ":7777".
No description provided by the author
NewServer service := ":7777".
No description provided by the author

# Structs

Connect 连接实例.
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author