加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
SendSocket.go 3.32 KB
一键复制 编辑 原始数据 按行查看 历史
greya 提交于 2019-06-06 14:23 . socket发送实现
package main
import (
"fmt"
"io"
"io/ioutil"
"net"
"reflect"
"strconv"
"time"
)
var n1 = 8
func main() {
for i := 0; i < 1; i++ {
start := time.Now()
port := "8100" //"50000"//"8100"
ip := "127.0.0.1" //"xz502.tpddns.cn"221.196.210.182
//ip := "221.196.210.182"//"xz502.tpddns.cn"221.196.210.182
//wavPath := "./tmp/"
//wavText := "火箭方面,哈登拿到29分8个篮板10次助攻。"
//wavText :="生活对我们任何人来说都不容易!最重要的是我们必须相信自己。我们必须相信,我们每个人都能够做得很好."
//wavText :="\"他叫卖着,\"今天早上现摘的鲜草莓,早上刚摘的乡下草莓哟……\" 摩莉看了看安娜"
//wavText :="在他握住车把将手推车向前推动之前,又抬头看了看窗口,发现只有安娜在那儿"
//wavText :="都将手携手,合唱一首古老的黑人灵歌, 自由啦."
wavText := "他压根儿是个城市居民"
//wavText :="” 对面大楼里走出另一个顾客"
//wavText :="\"对面大楼里走出另一个顾客"
//wavText :="生活对我们任何人来说都不容易!我们必须努力,最重要的是我们必须相信自己。我们必须相信,我们每个人都能够做得很好,而且,当我们发现这是什么时,我们必须努力工作,直到我们成功。"
fmt.Println("" + strconv.Itoa(len(wavText)))
EOS_TAG := "<EOS>"
addr := ip + ":" + port //定义主机名
conn, err := net.Dial("tcp", addr) //拨号操作,需要指定协议。
defer conn.Close()
if err != nil {
fmt.Println(err.Error())
}
fmt.Println("IP:", conn.RemoteAddr().String())
fmt.Printf("port:%v\n", conn.LocalAddr())
fmt.Println("conn.LocalAddr():", reflect.TypeOf(conn.LocalAddr()))
fmt.Println("conn.RemoteAddr().String():", reflect.TypeOf(conn.RemoteAddr().String()))
n, err := conn.Write([]byte(wavText + EOS_TAG))
fmt.Println("len:", n)
if err != nil {
fmt.Println(err.Error())
}
buf := make([]byte, 1024) //定义一个切片的长度是1024。
fmt.Println("begin1")
n, err = conn.Read(buf) //接收到的内容大小。
fmt.Println("len1:", n)
if err != nil && err != io.EOF {
fmt.Println(err.Error())
}
fmt.Println(buf[:n])
//fmt.Println(string(buf[:n1])) //将接受的内容都读取出来。
respLen := Byte2Int(buf[:n])
fmt.Println(respLen)
var buf1 []byte = buf[n1:n]
getLen := len(buf1)
fmt.Println("begin2")
for getLen < respLen {
bufIn := make([]byte, 1024)
n, err = conn.Read(bufIn) //接收到的内容大小。
//fmt.Println("lenin:",n)
if err != nil && err != io.EOF {
fmt.Println(err.Error())
}
getLen = getLen + n
if getLen <= respLen {
buf1 = append(buf1, bufIn[:n]...)
} else {
//n-(getLen-respLen)
buf1 = append(buf1, bufIn[:n-(getLen-respLen)]...)
}
//fmt.Println("getlen:::"+strconv.Itoa(getLen))
}
fmt.Println("get end")
//8位长度
//将指定内容写入到文件中
nameStr := "api-" + time.Now().Format("20190513-0000") + ".wav"
err = ioutil.WriteFile(nameStr, buf1, 0666)
if err != nil {
fmt.Println("ioutil WriteFile error: ", err)
}
cost := time.Since(start)
fmt.Printf("cost=[%s]", cost)
}
}
func Byte2Int(data []byte) int {
var ret int = 0
var len int = len(data)
var i uint = 0
for i = 0; i < uint(len); i++ {
ret = ret | (int(data[i]) << (i * 8))
}
return ret
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化