package main import "fmt" import "net" import "net/http" import "net/url" //import "bufio" import "io/ioutil" import "bytes" import "encoding/binary" //import "compress/gzip" //import "testing" import "encoding/json" import b64 "encoding/base64" //import ( // //"code.google.com/p/mahonia" // "fmt" // "net" // "os" // "strings" //) func main() { fmt.Println("Hello, 世界") //resp, err := http.Get("http://www.baidu.com"); //payload := []byte("testing") //body := bytes.NewBuffer(payload) //res, err := http.Post("http://192.168.2.152/sanguo-tookit/Protocol?command=1000", // "application/x-www-form-urlencoded", body) //fmt.Println(res) //fmt.Println(err) v := make(url.Values) v.Set("command", "1000") res, err := http.PostForm("http://192.168.2.152/sanguo-tookit/Protocol", v) fmt.Println(res) fmt.Println(err) if err != nil { fmt.Println(err.Error()) return } result, err := ioutil.ReadAll(res.Body) res.Body.Close() if err != nil { fmt.Println(err.Error()) return } fmt.Printf("%s", result) ////result, err := ioutil.ReadAll(res.body) //res, err := http.Get("http://www.baidu.com") //fmt.Println(res) //fmt.Println(err) byt := []byte(result) var dat map[string]string if err := json.Unmarshal(byt, &dat); err != nil { panic(err) } fmt.Println("=======================") fmt.Println(dat["body"]) byt1 := []byte(dat["body"]) fmt.Println(len(byt1)) uDec, _ := b64.URLEncoding.DecodeString(dat["body"]) fmt.Println(len(uDec)) client, err := net.Dial("tcp", "192.168.2.152:9382") //client, err := net.Dial("tcp", "61.135.169.105:80") if err != nil { fmt.Println("server connect error", err.Error()) return } fmt.Println("connect server") // defer client.Close() //sendMsg := make(uDec) respMsg, err := client.Write(uDec) if err != nil { fmt.Println("message recv error", err.Error()) return } fmt.Println(respMsg) //client.Read() //fmt.Println(bufio.NewReader(client).Buffered()) //for { //} data := make([]byte, 49) client.Read(data) fmt.Println(data) aa := data[0] fmt.Println(data[0]) fmt.Println(aa) // read fingerprint 4 bytes fingerprint := make([]byte, 4) copy(fingerprint[:], data[0:4]) // from data to fingerprint fmt.Println(fingerprint) // read protocol version 1 byte protocolVersion := data[4] fmt.Println(protocolVersion) // read app id 4 bytes (int) appIdBytes := make([]byte, 4) copy(appIdBytes[:], data[5:9]) fmt.Println(appIdBytes) // read session id 32 bytes (string) sessionIdBytes := make([]byte, 32) copy(sessionIdBytes[:], data[9:41]) fmt.Println(sessionIdBytes) // read mask length 4 bytes (int) maskLengthBytes := make([]byte, 4) copy(maskLengthBytes[:], data[41:45]) fmt.Println(maskLengthBytes) // read command id 4 bytes(int) commandIdBytes := make([]byte, 4) copy(commandIdBytes[:], data[45:49]) fmt.Println(commandIdBytes) commandId := readInt(commandIdBytes) fmt.Println(commandId) //commandIdBuffer := bytes.NewBuffer(commandIdBytes) //var x int32 //binary.Read(commandIdBuffer, binary.BigEndian, &x) //fmt.Println(x) //data := make([]byte, 1024) //fmt.Println(data) //buf := bytes.NewBuffer(data) // b is []byte //finger := make([]byte, 49) //fmt.Println("=====fff======") //binary.Varint(finger) //fmt.Println(finger) //myfirstint, err := binary.ReadVarint(buf) ////anotherint, err := binary.ReadVarint(buf) //fmt.Println(myfirstint) ////fmt.Println(anotherint) ////data, err := read(client, 256) ////fmt.Println("===========") ////fmt.Println(len(data)) } func readInt(src []byte) int32 { readBuffer := bytes.NewBuffer(src) var intValue int32 binary.Read(readBuffer, binary.BigEndian, &intValue) return intValue } func read(conn net.Conn, length int) ([]byte, error) { data := make([]byte, length) buf_size := 1024 buf := make([]byte, buf_size) i := 0 for { if length < buf_size { if length == 0 { return data, nil } remain := make([]byte, length) r, err := conn.Read(remain) if err != nil { return nil, err } copy(data[i:(i+r)], remain[0:r]) i += r length -= r } else { r, err := conn.Read(buf) if err != nil { return nil, err } copy(data[i:(i+r)], buf[0:r]) i += r length -= r } } return data, nil }
相关推荐
开源项目-golang-example.zip,go/types tutorial
The-Golang-Standard-Library-by-Example-master.zip
golang for windows golang开发
golang 的 Swig 示例。 入门 $ go get github.com/bluele/golang-swig-example 测试 $ go test PASS ok github.com/bluele/golang-swig-example 0.042s
golang测试示例
介绍vs code 集成golang开发环境的安装方式
golang-swaggerui-example Golang-swaggerui-example是一个示例存储库,用于在您的Golang项目中使用SwaggerUI设置API文档。 详细说明可在。 API互动 可以通过访问localhost:8080 / swaggerui /访问SwaggerUI,有关...
一个简单的Golang模板示例 在学习Golang模板的过程中,某些方面令我感到困惑。 这个小仓库的目的是记录我最终要做的事情。 希望此回购可以作为至少一种有效使用模板的方式的示例。 绝不是要在Golang模板上做一个正确...
Golang 插件,支持企业版IntelliJ IDEA 2017.3.4 x64,版本号173.4548.28
gogland-173.3188.63.dmg, GOLANG最好用的IDE, 需要的同学下载吧!
1、该资源针是用golang语言写成,分为两部分:服务器端和客户端,进行连接即时通讯 2、golang语言基础,易于理解,新手可以作为参考学习 3、功能包含: 登录、注册、登录通知、点对点通讯、群聊通讯、在线通知、...
golang中文手册.chm,学习golang语言的字典,一典在手,天下我有
Api-golang-gin-realworld-example-app.zip,使用golang gingolang/gin代码库构建的示例性真实世界应用程序,包含遵循真实世界规范和api的真实世界示例(crud、auth、高级模式等)。,一个api可以被认为是多个软件设备...
基于Golang语言结合领域驱动设计(DDD) 实现o2o业务模型项目源码,支持线上商店,线下门店;多渠道(商户)、多门店、商品、规格SKU、快照、订单、促销、支付、配送等功能
本文主要给大家介绍了关于Golang实现字符串倒序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 字符串倒置如下: Hello World –> dlroW olleH 解决方案1: length := len(str) ...
golang-worker-example 缓冲通道示例+工作程序示例 建筑与跑步 构建项目: go build -o queued . 要启动工作程序,请运行: ./queued 要发出命令,请运行: curl -v -X POST "localhost:8000/work?delay=1s&name...
golang中文手册.rar
golang解析数字证书 PKCS#1 PKCS#8格式的私钥
在Centos7安装golang教程
golang-odbc 驱动