当前位置: 首页>>代码示例>>Golang>>正文


Golang Logger.Panic方法代码示例

本文整理汇总了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",
//.........这里部分代码省略.........
开发者ID:kaka2928,项目名称:im,代码行数:101,代码来源:client.go


注:本文中的log.Logger.Panic方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。