go语言学习==》简易socket客户端服务端通信收发、redis订阅消息,get、set数据

go语言学习==》简易socket客户端服务端通信收发、redis订阅消息,get、set数据

  • redis操作

conn.Do()里面执行redis控制台命令

conn, _ := redis.Dial("tcp", "127.0.0.1:6379")
conn.Do("SET", "keyString", "I am string")

启动服务cmd命令:


redis-server.exe redis.windows.conf

连接redis命令


Redis-cli.exe

demo收发订阅发布消息

package main

import (
    "github.com/garyburd/redigo/redis"
	"fmt"
	"time"
)

func Send(){//发布消息
	//连接
	conn, _ := redis.Dial("tcp", "127.0.0.1:6379")
	defer conn.Close()
	//放置string类型数据
	conn.Do("SET", "keyString", "I am string")
	//发布放置了string数据的消息
	_,err := conn.Do("PUBLISH", "channel1", "keyString")
	if err != nil {
	    fmt.Println("publish err: ", err)
	    return
	}

	//放置int类型数据
	conn.Do("SET", "keyInt", 99)
	//发布放置了string数据的消息
	_,err = conn.Do("PUBLISH", "channel1", "keyInt")
	if err != nil {
	    fmt.Println("publish err: ", err)
	    return
	}



}

func Receiver(){//订阅消息
	//连接
	conn, err := redis.Dial("tcp", "127.0.0.1:6379")
	defer conn.Close()
    if err != nil {
        fmt.Println("connect redis error :", err)
        return
    }
    defer conn.Close()
    psc := redis.PubSubConn{conn}
    psc.Subscribe("channel1") //订阅channel1频道
    for {
        switch v := psc.Receive().(type) {
        case redis.Message:
            fmt.Printf("\n%s接收到一个放置%s的消息\n", v.Channel, v.Data)
            conn1,_ := redis.Dial("tcp","127.0.0.1:6379")
            str:=string(v.Data)
            value,_:=redis.String(conn1.Do("GET", str))
            fmt.Println("值为:",value)

        case redis.Subscription:
            fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
        case error:
            fmt.Println(v)
            return
        }
    }

}


func main()  {

	go Send()
	go Receiver()
	time.Sleep(time.Second*10)
 
}


简易:socket聊天通信demo
server端

package main

import (
    "net"
     "fmt"
     "bufio"
 
 )
//服务端实现
func server(){
     //tcp监听8888端口
    lis, _ := net.Listen("tcp", "localhost:8888")

    //接受8888端口的连接
    conn, _ := lis.Accept()

    //循环监听并且操作8888端口
    for {
        //监听客户端发来的消息
        msg, _ := bufio.NewReader(conn).ReadString('\n')
        //输出客户端消息
        fmt.Print("收到消息:", string(msg))
        
        //发送消息给客户端
        conn.Write([]byte("我是服务器" + "\n"))
    }
}
func main() {

    server()
   
}

client端

package main

import (
"net"
 "fmt"
 "bufio"
 "os"
)
func client() {
    //连接到8888端口
    conn, _ := net.Dial("tcp", "localhost:8888")
    //循环监听并且操作8888端口
    for {
        //获取控制台输入句柄
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("请输入文本: ")
        //从控制台读取string 
        text, _ := reader.ReadString('\n')
        //发送文本
        fmt.Fprintf(conn, text + "\n")
        //监听是否发送成功(监听服务器发来的消息)
        msg, _ := bufio.NewReader(conn).ReadString('\n')
        fmt.Print("服务器传来的消息: "+msg)
    }
}

func main() {

    client()
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值