package transport
import (
"encoding/binary"
"errors"
"io"
"math"
"sync"
)const (
sizelen =5
//設定訊息多少位元組大小,1<<4*8-1長度,最後乙個位元組用來做訊息分割的,防止惡意鏈結
)var (
errlength = errors.new("message too large")
errheader = errors.new("message head error")
)//新增資料頭並傳送
func sedmsg(w io.writer, p byte) error
var buf = make(byte, sizelen+msglen)
binary.bigendian.putuint32(buf, uint32(msglen))
copy(buf[sizelen:], p)
_, err := w.write(buf)
return err
}//從資料流中根據頭長度讀取完整的訊息
func rcvmsg(r io.reader, lock sync.locker) (byte, error)
if header[sizelen-1] ==0
msg := make(byte, int(length))
if _, err := io.readfull(r, msg); err != nil
msg = msg[:0]
return
nil, err
}return msg, nil
}return
nil, errheader
}
做乙個FSK的收發試驗 之一
這裡使用我們之前寫好的簡易的dds模組。我們先回顧一下用到的這個my dds模組。my dds my dds clk rst clr cnt step sin cos module my dds input clk rst,clr input 15 0 cnt,input 7 0 step outp...
win10的乙個好訊息和乙個壞訊息
更新到最新的win10以後,乙個重大的好訊息就是 win10終於自帶curl工具了,慶祝 撒花 同時自帶的還有tar工具。開啟cmd輸入curl help和tar help可以看到命令的幫助資訊。對於自帶curl工具正是乙個令人振奮的訊息。但是,但是 千萬不要用power shell來使用curl,...
乙個好用的串列埠類(收發自如)
個串列埠通訊的類 ifndef commutils h define commutils h class commutils endif include stdafx.h include commutils.h include stdio.h const int read timeout 500 c...