JSON解析
使用
err = json.Unmarshal(message, &clientConnectInfo)
if err != nil {
fmt.Println(err)
}
进行json解析时,需要将结构体中的变量定义用大写字母开头,否则无法解析出内容,太坑了!!!
将两个socket数据连接loopback
就是说把两个连在本地的socket对接,做一个转发,google了一圈也没找到成熟的例子,不得已手撸了一个,ugly but work,如有更好的方法还请指教!
func loopBack(conn1 net.Conn, conn2 net.Conn) {
go func() {
Buffer1 := make([]byte, 8192)
for {
readLen1, _ := conn1.Read(Buffer1)
if readLen1 == 0 {
break // connection already closed by client
}
conn2.Write(Buffer1[:readLen1])
}
}()
Buffer2 := make([]byte, 8192)
for {
readLen2, _ := conn2.Read(Buffer2)
if readLen2 == 0 {
break // connection already closed by client
}
conn1.Write(Buffer2[:readLen2])
}
}
一个程序启动多个go程
大概如下是跑不起来的:
func main() {
Init()
go f1()
go f2()
f3()
/*for {
continue
}*/
}
必须把注释掉的死循环加上,这么简单的坑硬是1个小时才看出来,debug半天,还是代码写少了啊!
go程序不知为何挂死
在goland下用debug模式运行程序,程序跑着跑着会卡住。具体表现为debug却能继续进行,点击暂停发现程序一直在main函数的主循环里,而其他之前运行的goroutine却卡住了,各种修改都不管用,最后发现用run直接运行就没有问题。。。让人头大