用go語言實現乙個server作中轉**訊息,多個客戶端聊天
1)伺服器開啟,等待來自客戶端的連線,把每乙個客戶端儲存在map中
2)客戶端連線伺服器,給自己取乙個別名,儲存在伺服器
4)客戶端發訊息,伺服器解析協議,**給每乙個客戶端
5)客戶端下線
server
// server project main.go
package main
import (
"fmt"
"net"
"strings"
)var connmap map[string]net.conn = make(map[string]net.conn)
//connmap := make(map[string]net.conn)
func main()
defer listen_socket.close()
fmt.println("server is wating ....")
for
fmt.println(conn.remoteaddr(), "connect successed")
go handle(conn) }}
func handle(conn net.conn)
//解析協議
msg_str := strings.split(string(data[0:msg_read]), "|")
switch msg_str[0]
}connmap[msg_str[1]] = conn
case "say":
for k, v := range connmap
}case "quit":
for k, v := range connmap
}delete(connmap, msg_str[1])
} }}
client
// client project main.go
package main
import (
"fmt"
"net"
)var nick string = ""
func main()
defer conn.close()
fmt.println("connect server successed \n")
//給自己取乙個暱稱吧
fmt.printf("make a nickname:")
fmt.scanf("%s", &nick)
fmt.println("hello : ", nick)
conn.write(byte("nick|" + nick))
go handle(conn)
var msg string
for }}
func handle(conn net.conn)
fmt.println(string(data[0:msg_read]))
}}
程式截圖
不同語言間的通訊:
golang實現簡易多人聊天伺服器
伺服器端server.go 如下 package main import fmt net var connmap map string net.tcpconn 客戶端ip到conn 接收連線 的對映 func checkerr err error int fmt.println 發生錯誤 retur...
Go語言實現定向聊天,最簡單的
服務端 message server.go package main import container list encoding json fmt json go json go json net sync time type client message struct type all mess...
使用Nodejs實現聊天伺服器
使用者上線後,根據使用者的userid和socket,儲存到乙個全域性的map中 傳送訊息時,根據對方的userid找到對應的socket,通過socket.emit傳送訊息給對方 使用者下線後,從全域性的map中刪除對應的使用者socket 由於需要保持長連線,客戶端需要定時發心跳給服務端,所以定...