require (
github.com/dustin/go-humanize v1.0.1
- github.com/qydysky/part v0.28.20240414033603
+ github.com/qydysky/part v0.28.20240414150808
)
require (
github.com/andybalholm/brotli v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/compress v1.17.7 // indirect
github.com/miekg/dns v1.1.58 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/tools v0.19.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
+
+// replace "github.com/qydysky/part" => "../part"
github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/qydysky/part v0.28.20240414033603 h1:SqjseibUCRvjKR+DgAn1vhQC+jeD7ISCjhONBsgBNTM=
-github.com/qydysky/part v0.28.20240414033603/go.mod h1:XytV5dI1Y7+qvjhsa2TMvi55RBZQQf0LCDYQ1kUCYqM=
+github.com/qydysky/part v0.28.20240414150808 h1:QGYKslNxGNrkQjIX0TW0Bp1XJGQuMMZvNnJmqQxaJQE=
+github.com/qydysky/part v0.28.20240414150808/go.mod h1:XytV5dI1Y7+qvjhsa2TMvi55RBZQQf0LCDYQ1kUCYqM=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
"bufio"
"context"
"errors"
+ "fmt"
"log"
"net"
+ "net/http"
"testing"
"time"
"github.com/qydysky/part"
pctx "github.com/qydysky/part/ctx"
+ preqf "github.com/qydysky/part/reqf"
+ pweb "github.com/qydysky/part/web"
)
func Test(t *testing.T) {
To: "udp://127.0.0.1:20009",
Accept: []string{"127.0.0.1/32"},
},
+ {
+ Listen: "tcp://127.0.0.1:20011",
+ To: "tcp://127.0.0.1:20010",
+ Accept: []string{"127.0.0.1/32"},
+ },
})
go func() {
}()
time.Sleep(time.Second)
- if e := tcpSer("127.0.0.1:20000", "127.0.0.1:20001"); e != nil {
- t.Fatal(e)
+ for i := 0; i < 100; i++ {
+ if e := tcpSer("127.0.0.1:20000", "127.0.0.1:20001"); e != nil {
+ t.Fatal(e)
+ }
}
if e := tcpSer("127.0.0.1:20002", "127.0.0.1:20003"); e == nil {
t.Fatal(e)
if e := tcp2udpSer("127.0.0.1:20008", "127.0.0.1:20009"); e != nil {
t.Fatal(e)
}
+ if e := tcp2udpSer("127.0.0.1:20008", "127.0.0.1:20009"); e != nil {
+ t.Fatal(e)
+ }
+ if e := webSer("127.0.0.1:20008", "127.0.0.1:20009"); e != nil {
+ t.Fatal(e)
+ }
}
func tcpSer(lis, to string) error {
if err != nil {
return err
}
-
+ conn.SetDeadline(time.Now().Add(time.Second))
// Send a message to the server
_, err = conn.Write([]byte("Hello TCP Server\n"))
if err != nil {
return nil
}
}
+
+func webSer(lis, to string) error {
+ {
+ w := pweb.New(&http.Server{
+ Addr: "127.0.0.1:20010",
+ })
+ defer w.Shutdown()
+
+ w.Handle(map[string]func(http.ResponseWriter, *http.Request){
+ `/`: func(w http.ResponseWriter, r *http.Request) {
+ w.Write([]byte("999"))
+ },
+ })
+ }
+ r := preqf.New()
+ e := r.Reqf(preqf.Rval{
+ Url: "http://127.0.0.1:20010",
+ })
+ fmt.Println(r.Respon)
+ return e
+}