2 Star 0 Fork 0

slh92 / plugin-sip

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
example.go 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
slh92 提交于 2024-04-16 10:38 . update:优化客户端本地地址
package transport
import (
"fmt"
"gitee.com/slh1992/plugin-sip/utils"
"os"
"time"
)
//默认端口:TCP/UDP是5060,5061是在TCP上的TLS
//对于服务器监听UDP的任何端口和界面,都必须在TCP上也进行同样的监听。这是因为可能消息还需要通过TCP进行传输,比如消息过大的情况。
const SipHost string = "58.52.132.210"
const SipPort uint16 = 58200
func RunServerTCP() {
tcp := NewTCPServer(SipPort, true)
go PacketHandler(tcp)
go func() {
_ = tcp.StartAndWait()
}()
select {}
}
//测试通讯,客户端先发一条消息
func RunClientTCP() {
c := NewTCPClient(SipHost, SipPort)
go PacketHandler(c)
go func() {
_ = c.StartAndWait()
}()
//发送测试数据
fmt.Println("send test data")
go func() {
for {
c.WritePacket(&Packet{Data: []byte("from client : " + time.Now().String())})
time.Sleep(2 * time.Second)
}
}()
select {}
}
func PacketHandler(s ITransport) {
defer func() {
if err := recover(); err != nil {
fmt.Println("packet handler panic: ", err)
utils.PrintStack()
os.Exit(1)
}
}()
fmt.Println("PacketHandler ========== ", s.Name())
ch := s.ReadPacketChan()
//阻塞读取消息
for {
select {
case p := <-ch:
fmt.Println("packet content:", string(p.Data))
//TODO:message parse
}
}
}
//======================================================================
func RunServerUDP() {
udp := NewUDPServer(SipPort)
go PacketHandler(udp)
go func() {
_ = udp.StartAndWait()
}()
select {}
}
func RunClientUDP() {
c, _ := NewUDPClient(SipHost, SipPort, ":15060")
go PacketHandler(c)
go func() {
_ = c.StartAndWait()
}()
//发送测试数据
go func() {
for {
time.Sleep(1 * time.Second)
c.WritePacket(&Packet{
Data: []byte("hello " + time.Now().String())})
}
}()
select {}
}
Go
1
https://gitee.com/slh1992/plugin-sip.git
git@gitee.com:slh1992/plugin-sip.git
slh1992
plugin-sip
plugin-sip
v1.3.9

搜索帮助

53164aa7 5694891 3bd8fe86 5694891