Golang 网络聊天室

基于 tcp/ip 协议使用 go 语言搭建

服务端搭建

开启监听端口

1
listen, _ := net.Listen("tcp", "127.0.0.1:20000")

与客户端建立连接

1
2
3
4
5
6
7
for{
//监听连接请求
conn, _ := listen.Accept()

//开一个goroutine处理连接
go ProcessInfo(conn)
}

使用channel处理消息队列

1
2
3
4
5
6
7
8
func ConsumeMessage() {
for {
select {
case message := <-messageQueue:
ProcessMessage(message)
}
}
}

处理客户端连接

1
2
3
4
5
//读取客户端的消息
n, _ := conn.Read(buf[:])

//向客户端发送消息
n, _ := conn.Write([]byte(message))

客户端搭建

与服务端建立连接

1
conn,_ :=net.Dial("tcp","127.0.0.1:20000")

项目源码

完整代码存放在我的github上 传送门

启动服务端

1
go run serve.go

启动客户端

1
go run client.go

输入昵称后进入聊天室

1
please set your name : kqzh

自动获取 Usage

1
2
3
4
5
6
7
welcome visitor, you can send message to anyone who is online too!

send message 'list' to get online members

send message 'quit' to exit

message format is 'xxx #name'

操作演示

查看当前在线成员

1
list

输出聊天室所有成员

1
online members : kqzh chen

发送消息给chen

1
hello , can you hear me? #chen

chen 会收到来自kqzh的消息

1
kqzh : hello , can you hear me?

退出聊天室

1
quit

客户端停止运行

1
have a good day!