神奇的go語言(聊天室的開發)

2021-06-22 20:51:07 字數 1796 閱讀 7150

package main

import(

"fmt"

"os"

"net")//

//錯誤檢查

//func checkerror(err error,info string) (res bool)

return true}//

//伺服器端接收資料執行緒

//引數:

// 資料連線 conn

// 通訊通道 messages

//func handler(conn net.conn,messages chan string)

if lenght > 0

"rec[",conn.remoteaddr().string(),"] say :" ,string(buf[0:lenght]))

recivestr :=string(buf[0:lenght])

messages <- recivestr

} }

////伺服器傳送資料的執行緒

////引數

// 連線字典 conns

// 資料通道 messages

//func echohandler(conns *map[string]net.conn,messages chan string)

} }

}////啟動伺服器

//引數

// 埠 port

//func startserver(port string) }

////客戶端傳送執行緒

//引數

// 傳送連線 conn

//func chatsend(conn net.conn)

lens,err :=conn.write(byte(username + " say :::" + input))

fmt.println(lens)

if(err != nil)

} }////客戶端啟動函式

//引數

// 遠端ip位址和埠 tcpaddr

//func startclient(tcpaddr string)

fmt.println(string(buf[0:lenght]))

}}//

//主程式

////引數說明:

// 啟動伺服器端: chat server [port] eg: chat server 9090

// 啟動客戶端: chat client [server ip addr]:[server port] eg: chat client 192.168.0.74:9090

//func main()

if os.args[1]=="server" && len(os.args)==3

if os.args[1]=="client" && len(os.args)==3

}

主要知識點如下:

(1)**中包括了伺服器和客戶端的內容,如果是伺服器,直接輸入./chat server 9090即可,客戶端也很簡單,輸入./chat client :9090就好;

(2)如果是客戶端,其實就包括了兩部分內容,一部分是chatsend函式,接受使用者的輸入;另一部分是connect到server,接受相關資訊;

(3)如果是server,稍微複雜一點,有三個部分組成。第一部分就是不停地accept各個客戶端;第二個就是為每乙個客戶端創立handler函式,接受客戶端發來的資訊;第三個就是echohandler函式,它的作用就是將從某一使用者接受過來的資訊廣播給其他所有的客戶端,就是這麼簡單。

奇妙的go語言(聊天室的開發)

package main import fmt os net 錯誤檢查 func checkerror err error,info string res bool return true server端接收資料執行緒 引數 資料連線 conn 通訊通道 messages func handler ...

Go語言 之TCP聊天室

服務端流程圖如下 客戶端結構體 type client struct var is online map string client 訊息通訊 var messages make chan string 廣播全域性訊息到客戶端 func message 生產訊息函式 func makemsg cli...

go 簡單聊天室

package main import fmt net strings time 建立使用者結構體型別 type cline struct var onlinemap map string cline 建立全域性 channel 傳遞使用者訊息 var message make chan strin...