Golang TCP客户端实现菜单显示,实现广播聊天
Posted 卑微的小李
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang TCP客户端实现菜单显示,实现广播聊天相关的知识,希望对你有一定的参考价值。
通过嵌套循环实现用户选择操作
fmt.Println("1.公聊模式")
fmt.Println("2.私聊模式")
fmt.Println("3.修改用户名")
fmt.Println("4.退出")
var flag int
fmt.Scanln(&flag)
for {
switch flag {
case 1:
println("输入发送内容,发送end 回到上级目录")
var msg string
fmt.Scanln(&msg)
for msg != "end" {
client.brodCast(msg)
fmt.Scanln(&msg)
}
case 2:
println("2")
case 3:
println("3")
case 4:
println("exit")
os.Exit(1)
default:
println("input invalid")
}
fmt.Println("1.公聊模式")
fmt.Println("2.私聊模式")
fmt.Println("3.修改用户名")
fmt.Println("4.退出")
fmt.Scanln(&flag)
}
创建协程用于接收服务器来的消息,同时用接收数据为0来判断服务器是否断开
func (this* Client) tcpListener() {
for {
msg :=make([]byte,4096)
num,err :=this.Conn.Read(msg)
if err != nil {
fmt.Println("user Read err:",err)
}
if num==0 {
fmt.Println(fmt.Sprintf("server:%s device close.",this.Conn.RemoteAddr().String()))
_ = this.Conn.Close()
runtime.Goexit()
}else {
msgStr := string(msg[:num])
fmt.Println(msgStr)
}
}
}
根据与服务器的协议,发送广播消息
func (this* Client) brodCast(msg string) {
_,err := this.Conn.Write([]byte("all:"+msg))
if err != nil {
fmt.Println("server brodCast err:",err)
}
}
效果:
以上是关于Golang TCP客户端实现菜单显示,实现广播聊天的主要内容,如果未能解决你的问题,请参考以下文章