Commit a4f565dd authored by barnettZQG's avatar barnettZQG

init

parents
Pipeline #719 canceled with stages
{
"go.inferGopath": false
}
\ No newline at end of file
package main
import (
"fmt"
"net"
"time"
"github.com/sirupsen/logrus"
)
func main() {
address := "127.0.0.1:8080"
con, err := net.Dial("udp", address)
if err != nil {
logrus.Errorf("create udp client failure %s", err.Error())
}
var n = 0
for {
con.Write([]byte(fmt.Sprintf("hello word %d", n)))
n++
data := make([]byte, 1024)
con.Read(data)
fmt.Println(string(data))
time.Sleep(time.Second * 5)
}
}
package main
import (
"fmt"
"net"
"os"
"github.com/sirupsen/logrus"
)
// 限制goroutine数量
var limitChan = make(chan bool, 1000)
// UDP goroutine 实现并发读取UDP数据
func udpProcess(conn *net.UDPConn, index int) {
// 最大读取数据大小
data := make([]byte, 1024)
n, _, err := conn.ReadFromUDP(data)
if err != nil {
fmt.Println("failed read udp msg, error: " + err.Error())
}
str := string(data[:n])
fmt.Println("receive from client, data:" + str)
conn.Write([]byte(fmt.Sprintf("receive %d", index)))
<-limitChan
}
func udpServer(address string) {
udpAddr, err := net.ResolveUDPAddr("udp", address)
logrus.Infof("listen %s", address)
conn, err := net.ListenUDP("udp", udpAddr)
defer conn.Close()
if err != nil {
fmt.Println("read from connect failed, err:" + err.Error())
os.Exit(1)
}
var n = 0
for {
limitChan <- true
go udpProcess(conn, n)
n++
}
}
func main() {
address := "0.0.0.0:8080"
udpServer(address)
}
module rainbond.io/udptest
go 1.15
require github.com/sirupsen/logrus v1.8.1
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment