當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。