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

2021-09-06 17:30:45 字數 1851 閱讀 4408

package main

import(

"fmt"

"os"

"net")//

//錯誤檢查

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

return true}//

//server端接收資料執行緒

//引數:

// 資料連線 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

} }

////server傳送資料的執行緒

////引數

// 連線字典 conns

// 資料通道 messages

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

} }

}////啟動server

//引數

// 埠 port

//func startserver(port string) }

////client傳送執行緒

//引數

// 傳送連線 conn

//func chatsend(conn net.conn)

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

fmt.println(lens)

if(err != nil)

} }////client啟動函式

//引數

// 遠端ip位址和埠 tcpaddr

//func startclient(tcpaddr string)

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

}}//

//主程式

////引數說明:

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

// 啟動client: 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)**中包含了server和client的內容,假設是server,直接輸入./chat server 9090就可以,client也非常easy,輸入./chat client :9090就好;

(2)假設是client,事實上就包含了兩部分內容,一部分是chatsend函式,接受使用者的輸入;還有一部分是connect到server,接受相關資訊;

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

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

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

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...