本文整理汇总了Golang中log.Logger.Panic方法的典型用法代码示例。如果您正苦于以下问题:Golang Logger.Panic方法的具体用法?Golang Logger.Panic怎么用?Golang Logger.Panic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类log.Logger
的用法示例。
在下文中一共展示了Logger.Panic方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Write
/****************************************************
*@function Write(serverAddr string)
*****************************************************
*@brief 本地输入接口,绑定本地唯一发送端口
加开一个进程,用于发送心跳,维护在线状态
*****************************************************
*@access Public
*****************************************************
*@param 无
*****************************************************
*@return 无
*****************************************************/
func (u *User) Write(groupCh chan string, logger *log.Logger) {
runtime.GOMAXPROCS(runtime.NumCPU())
//开启进程,定时发送心跳,维护在线
go func(beatPort string, userName string) {
HeartBeat(beatPort, userName)
}(u.chatPort, u.name)
//接收用户输入并发送
inputCh := make(chan string)
go func(ch chan string) {
buffer := make([]byte, 1024)
for {
fmt.Printf("<%s>:", u.name)
count, err := os.Stdin.Read(buffer)
if err != nil {
fmt.Println(err)
}
str := strings.TrimSpace(strings.TrimSpace(string(buffer[:count])))
ch <- str
}
}(inputCh)
var mess Message
chatUdpAddr, _ := net.ResolveUDPAddr("udp", u.chatPort)
chatConn, err := net.DialUDP("udp", nil, chatUdpAddr)
for {
//并发逻辑,收到group命令后,输入内容发送给client
/*******************************************************
存在一个问题是,与服务器之间的通信时在default中,
发送完group之后进入default中,等待下一个输入
解决办法:
******************************************************/
select {
case groupInfo := <-groupCh:
{
if groupInfo != "quit" {
//收到回话要求
groupList := strings.Split(groupInfo, "/")
remoteUdpAddr, _ := net.ResolveUDPAddr("udp", groupList[1])
remoteChatConn, err := net.DialUDP("udp", nil, remoteUdpAddr)
if err != nil {
logger.Panic(err)
fmt.Println(err)
}
//fmt.Printf("chat with client:%s\n",groupList[2])
encoder := json.NewEncoder(remoteChatConn)
quitFlag := false
var mess Message
for {
if quitFlag {
break
} else {
select {
case str := <-inputCh:
{
if str == "quit" {
quitFlag = true
mess = Message{
Cmd: "quit",
Sender: u.name,
Data: "",
Receiver: groupList[0],
}
} else {
mess = Message{
Cmd: "chat",
Sender: u.name,
Data: str,
Receiver: groupList[0],
}
}
err := encoder.Encode(mess)
if err != nil {
fmt.Println(err)
logger.Panic(err)
}
}
case groupInfo := <-groupCh:
{
if groupInfo == "quit" {
//退出会话,同时向服务器反馈
fmt.Printf("%s left the chatting\n", groupList[0])
quitFlag = true
remoteChatConn.Close()
mess = Message{
Cmd: "quit",
Sender: u.name,
Data: groupList[0],
Receiver: "server",
//.........这里部分代码省略.........