伺服器端server.go**如下:
package main
import (
"fmt"
"net"
)var connmap map[string]*net.tcpconn //客戶端ip到conn(接收連線)的對映
func checkerr(err error) int
fmt.println("發生錯誤")
return -1
} return -1
}func say(tcpconn *net.tcpconn) else
flag := checkerr(err)
if flag == 0
for _, conn := range connmap
conn.write(data[:total])
} }}func main()
}
客戶端**client.go**如下:
package main
import (
"fmt"
"net"
"os"
"bufio" //緩衝包
)var ch chan int = make(chan int)
func reader(conn *net.tcpconn)
fmt.println(string(buff[0:j])) }}
func main()
service := os.args[1] //該引數儲存的是從命令列獲取的ip位址及埠號
tcpadd, _ := net.resolvetcpaddr("tcp", service)
conn, err := net.dialtcp("tcp", nil, tcpadd) //請求與tcpadd指定的tcp伺服器建立連線
if err != nil
defer conn.close()
go reader(conn) //開闢另乙個go routine,接收其他客戶端發來的訊息
inputreader := bufio.newreader(os.stdin) //從stdin讀取資料
fmt.println("請輸入暱稱:")
nickname, err := inputreader.readstring('\n') //讀取一行資料,以字串形式返回
nickname = nickname[:len(nickname)-1] //將字串最後的換行符去掉
if err == nil
for
fmt.println("" + "說:" + msg)
b := byte("" + "說:" + msg)
conn.write(b) //將該訊息傳送給伺服器以**給其他客戶端
select
}}
該程式執行效果如下(開啟三個終端,同時執行伺服器和兩個客戶端進行除錯)
golang 簡易聊天
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...
使用NIO實現多人聊天
基於nio實現多人模擬聊天視窗,首先要了解,nio元件,serversocketchannel socketchannel selector selectorkey。了解了他們各自作用以及關係,多人聊天系統很容易理解實現,這裡不在介紹,自行了解 初始化服務端servesocketchannel 連線...
FMS實現多人同時語音聊天
fms能否實現多人同時語音聊天?目前已實現一人說,n人聽 伺服器採用的是fms 實現 是利用 my netstream.publish streamtoplay record 這樣做的話,乙個人說是沒問題的 但是如果有另一人同時說的話,再次publish就會出錯 error 2044 unhandl...