parent
314b448830
commit
467c1717f6
@ -0,0 +1,10 @@
|
||||
# consensusnodeid remove 删除共识节点
|
||||
$ ./cmc client chainconfig consensusnodeid remove \
|
||||
--sdk-conf-path=SDK配置文件地址 \
|
||||
--admin-crt-file-paths=crt文件路径 \
|
||||
--admin-key-file-paths=key文件路径 \
|
||||
--node-id=节点ID \
|
||||
--node-org-id=组织ID
|
||||
|
||||
# 停止节点进程
|
||||
$ kill -15 <节点程序pid>
|
@ -0,0 +1,23 @@
|
||||
package netProgram
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBIONet(t *testing.T) {
|
||||
BIONet()
|
||||
}
|
||||
|
||||
func TestBIOChannel(t *testing.T) {
|
||||
BIOChannel()
|
||||
}
|
||||
|
||||
func TestNIONet(t *testing.T) {
|
||||
NIONet()
|
||||
}
|
||||
|
||||
func TestNIOChannel(t *testing.T) {
|
||||
NIOChannel()
|
||||
}
|
||||
|
||||
func TestNIONetChannel(t *testing.T) {
|
||||
NIONetChannel()
|
||||
}
|
@ -0,0 +1,254 @@
|
||||
package netProgram
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
func UDPClientBasic() {
|
||||
// 1.建立连接
|
||||
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.DialUDP("udp", nil, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Println(udpConn)
|
||||
|
||||
// 2.写
|
||||
data := []byte("Go UDP program")
|
||||
wn, err := udpConn.Write(data) // WriteToUDP(data, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
}
|
||||
|
||||
func UDPClientConnect() {
|
||||
// 1.建立连接
|
||||
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.DialUDP("udp", nil, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
|
||||
// 2.写
|
||||
data := []byte("Go UDP program")
|
||||
wn, err := udpConn.Write(data) // WriteToUDP(data, raddr)
|
||||
//wn, err := udpConn.WriteToUDP(data, raddr) // WriteToUDP(data, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
}
|
||||
|
||||
func UDPClientPeer() {
|
||||
// 1.解析地址
|
||||
laddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:6789")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
// 2.监听
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
defer udpConn.Close()
|
||||
|
||||
// 远程地址
|
||||
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.写
|
||||
data := []byte("Go UDP program")
|
||||
wn, err := udpConn.WriteToUDP(data, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
}
|
||||
|
||||
// 多播的发送端
|
||||
func UDPSenderMulticast() {
|
||||
// 1.建立UDP多播组连接
|
||||
address := "224.1.1.2:6789"
|
||||
raddr, err := net.ResolveUDPAddr("udp", address)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.DialUDP("udp", nil, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer udpConn.Close()
|
||||
|
||||
// 2.发送内容
|
||||
// 循环发送
|
||||
for {
|
||||
data := fmt.Sprintf("[%s]: %s", time.Now().Format("03:04:05.000"), "hello!")
|
||||
wn, err := udpConn.Write([]byte(data))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
log.Printf("send \"%s\"(%d) to %s\n", data, wn, raddr.String())
|
||||
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
// 广播发送端
|
||||
func UDPSenderBroadcast() {
|
||||
// 1.监听地址
|
||||
// 2.建立连接
|
||||
laddr, err := net.ResolveUDPAddr("udp", ":9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer udpConn.Close()
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
|
||||
// 3.发送数据
|
||||
// 广播地址
|
||||
rAddress := "192.168.50.255:6789"
|
||||
raddr, err := net.ResolveUDPAddr("udp", rAddress)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
for {
|
||||
data := fmt.Sprintf("[%s]: %s", time.Now().Format("03:04:05.000"), "hello!")
|
||||
// 广播发送
|
||||
wn, err := udpConn.WriteToUDP([]byte(data), raddr)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
log.Printf("send \"%s\"(%d) to %s\n", data, wn, raddr.String())
|
||||
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
// 文件传输(上传)
|
||||
func UDPFileClient() {
|
||||
// 1.获取文件信息
|
||||
filename := "./data/Beyond.mp3"
|
||||
// 打开文件
|
||||
file, err := os.Open(filename)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
// 关闭文件
|
||||
defer file.Close()
|
||||
// 获取文件信息
|
||||
fileinfo, err := file.Stat()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
//fileinfo.Size(), fileinfo.Name()
|
||||
log.Println("send file size:", fileinfo.Size())
|
||||
|
||||
// 2.连接服务器
|
||||
raddress := "192.168.50.131:5678"
|
||||
raddr, err := net.ResolveUDPAddr("udp", raddress)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.DialUDP("udp", nil, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer udpConn.Close()
|
||||
|
||||
// 3.发送文件名
|
||||
if _, err := udpConn.Write([]byte(fileinfo.Name())); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 4.服务端确认
|
||||
buf := make([]byte, 4*1024)
|
||||
rn, err := udpConn.Read(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
// 判断是否为文件名正确接收响应
|
||||
if "filename ok" != string(buf[:rn]) {
|
||||
log.Fatalln(errors.New("server not ready"))
|
||||
}
|
||||
|
||||
// 5.发送文件内容
|
||||
// 读取文件内容,利用连接发送到服务端
|
||||
// file.Read()
|
||||
i := 0
|
||||
for {
|
||||
// 读取文件内容
|
||||
rn, err := file.Read(buf)
|
||||
if err != nil {
|
||||
// io.EOF 错误表示文件读取完毕
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 发送到服务端
|
||||
if _, err := udpConn.Write(buf[:rn]); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
i++
|
||||
}
|
||||
log.Println(i)
|
||||
// 文件发送完成。
|
||||
log.Println("file send complete.")
|
||||
|
||||
// 等待的测试
|
||||
time.Sleep(2 * time.Second)
|
||||
}
|
@ -0,0 +1,229 @@
|
||||
package netProgram
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
)
|
||||
|
||||
func UDPServerBasic() {
|
||||
// 1.解析地址
|
||||
laddr, err := net.ResolveUDPAddr("udp", ":9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.监听
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
defer udpConn.Close()
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
|
||||
// 4.写
|
||||
data := []byte("received:" + string(buf[:rn]))
|
||||
wn, err := udpConn.WriteToUDP(data, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
}
|
||||
|
||||
func UDPServerConnect() {
|
||||
// 1.解析地址
|
||||
laddr, err := net.ResolveUDPAddr("udp", ":9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.监听
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
defer udpConn.Close()
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
//rn, err := udpConn.Read(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
|
||||
// 4.写
|
||||
data := []byte("received:" + string(buf[:rn]))
|
||||
wn, err := udpConn.WriteToUDP(data, raddr)
|
||||
//wn, err := udpConn.Write(data)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
|
||||
// 测试输出远程地址
|
||||
log.Println(udpConn.RemoteAddr())
|
||||
}
|
||||
|
||||
func UDPServerPeer() {
|
||||
// 1.解析地址
|
||||
laddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9876")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.监听
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
defer udpConn.Close()
|
||||
|
||||
// 远程地址
|
||||
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:6789")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 3.读
|
||||
buf := make([]byte, 1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("received %s from %s\n", string(buf[:rn]), raddr.String())
|
||||
|
||||
// 4.写
|
||||
data := []byte("received:" + string(buf[:rn]))
|
||||
wn, err := udpConn.WriteToUDP(data, raddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Printf("send %s(%d) to %s\n", string(data), wn, raddr.String())
|
||||
|
||||
}
|
||||
|
||||
// 多播接收端
|
||||
func UDPReceiverMulticast() {
|
||||
// 1.多播监听地址
|
||||
address := "224.1.1.2:6789"
|
||||
gaddr, err := net.ResolveUDPAddr("udp", address)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.多播监听
|
||||
udpConn, err := net.ListenMulticastUDP("udp", nil, gaddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 3.接受数据
|
||||
// 循环接收
|
||||
buf := make([]byte, 1024)
|
||||
for {
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
log.Printf("received \"%s\" from %s\n", string(buf[:rn]), raddr.String())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 广播接收端
|
||||
func UDPReceiverBroadcast() {
|
||||
// 1.广播监听地址
|
||||
laddr, err := net.ResolveUDPAddr("udp", ":6789")
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 2.广播监听
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer udpConn.Close()
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
|
||||
// 3.接收数据
|
||||
// 4.处理数据
|
||||
buf := make([]byte, 1024)
|
||||
for {
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
log.Printf("received \"%s\" from %s\n", string(buf[:rn]), raddr.String())
|
||||
}
|
||||
}
|
||||
|
||||
// UDP文件传输
|
||||
func UDPFileServer() {
|
||||
// 1.建立UDP连接
|
||||
laddress := ":5678"
|
||||
laddr, err := net.ResolveUDPAddr("udp", laddress)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
udpConn, err := net.ListenUDP("udp", laddr)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer udpConn.Close()
|
||||
log.Printf("%s server is listening on %s\n", "UDP", udpConn.LocalAddr().String())
|
||||
|
||||
// 2.接收文件名,并确认
|
||||
buf := make([]byte, 4*1024)
|
||||
rn, raddr, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
filename := string(buf[:rn])
|
||||
if _, err := udpConn.WriteToUDP([]byte("filename ok"), raddr); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 3.接收文件内容,并写入文件
|
||||
// 打开文件(创建)
|
||||
file, err := os.Create(filename)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// 网络读取
|
||||
i := 0
|
||||
for {
|
||||
// 一次读取
|
||||
rn, _, err := udpConn.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// 写入文件
|
||||
if _, err := file.Write(buf[:rn]); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
i++
|
||||
log.Println("file write some content", i)
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package netProgram
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestUDPServerBasic(t *testing.T) {
|
||||
UDPServerBasic()
|
||||
}
|
||||
|
||||
func TestUDPClientBasic(t *testing.T) {
|
||||
UDPClientBasic()
|
||||
}
|
||||
|
||||
// 连接状态测试
|
||||
func TestUDPServerConnect(t *testing.T) {
|
||||
UDPServerConnect()
|
||||
}
|
||||
|
||||
func TestUDPClientConnect(t *testing.T) {
|
||||
UDPClientConnect()
|
||||
}
|
||||
|
||||
// 对等终端测试
|
||||
func TestUDPServerPeer(t *testing.T) {
|
||||
UDPServerPeer()
|
||||
}
|
||||
|
||||
func TestUDPClientPeer(t *testing.T) {
|
||||
UDPClientPeer()
|
||||
}
|
||||
|
||||
// 多播测试
|
||||
func TestUDPReceiverMulticast(t *testing.T) {
|
||||
UDPReceiverMulticast()
|
||||
}
|
||||
func TestUDPSenderMulticast(t *testing.T) {
|
||||
UDPSenderMulticast()
|
||||
}
|
||||
|
||||
// 广播测试
|
||||
func TestUDPReceiverBroadcast(t *testing.T) {
|
||||
UDPReceiverBroadcast()
|
||||
}
|
||||
func TestUDPSenderBroadcast(t *testing.T) {
|
||||
UDPSenderBroadcast()
|
||||
}
|
||||
|
||||
// 文件传输测试
|
||||
func TestUDPFileClient(t *testing.T) {
|
||||
UDPFileClient()
|
||||
}
|
||||
|
||||
func TestUDPFileServer(t *testing.T) {
|
||||
UDPFileServer()
|
||||
}
|
Loading…
Reference in new issue