golang 簡易聊天

2021-09-22 17:21:39 字數 1974 閱讀 7801

client.go

------------------------------package main

import (

"net""

fmt"

"bufio""

echo/codec""

time")

var quitsemaphore chan bool

func main()

//傳送訊息

func sendmessage(conn *net.tcpconn)

//lk

//b :=byte(msg +"\n")

//處理加密

b ,_ := codec.encode(msg+"\n"

) conn.write(b)

}}

server.go

-----------------------------package main

import (

"bufio""

fmt"

"net""

echo/codec")

//用來記錄所有的客戶端連線

var connmap map[string]*net.tcpconn

func main()

fmt.println(

"a client connected :

"+tcpconn.remoteaddr().string())

//新連線加入 map

connmap[tcpconn.remoteaddr().string()] =tcpconn

go tcppipe(tcpconn)

}}//

處理傳送過來的訊息

func tcppipe(conn *net.tcpconn) ()

//讀取資料

reader :=bufio.newreader(conn)

for fmt.println(

string

(message))

//這裡返回訊息改為廣播

boradcastmessage(conn.remoteaddr().string()+"

:"+string

(message))

}}//

廣播給其它

func boradcastmessage(message string

) conn.write(b)

}}

codec.go

------------------------package codec

import (

"bytes""

encoding/binary""

bufio")

func encode(message

string) (byte

, error)

//寫入訊息實體

err = binary.write(pkg, binary.littleendian, byte

(message))

if err !=nil

return

pkg.bytes(), nil

}func decode(reader *bufio.reader) (string

, error)

if int32(reader.buffered()) < length+4

//讀取訊息真正的內容

pack := make(byte, int(4+length))

_, err =reader.read(pack)

if err !=nil

return

string(pack[4

:]), nil

}

func onmessagerecived(conn *net.tcpconn)  

}}

golang實現簡易多人聊天伺服器

伺服器端server.go 如下 package main import fmt net var connmap map string net.tcpconn 客戶端ip到conn 接收連線 的對映 func checkerr err error int fmt.println 發生錯誤 retur...

websocket 簡易聊天

通過命令列執行php檔案 如 php q index.php php s localhost 8000 瀏覽器訪問index.html chatdemotitle charset utf 8 name viewport content width device width,initial scale...

PHP Ajax,簡易聊天室

index.html php愛好者聊天室公告 歡迎惡魔來到聊天室 22 05 35 php愛好者聊天室公告 歡迎天使來到聊天室 22 05 35 data.php 後端,從資料庫獲取所有聊天資訊 隨時獲取最新的聊天訊息 link mysql connect localhost root 123456...