Thanks for your answer!(: You are right, but I just wanted to have this one little tool in Go and I have never thought that could be that hard... ahahah
By the way, it works as you said, it fixed the error! ( obviously.. ) the only thing left is to convert type *bytes.Buffer to []byte * I think* and then I will be almost done. Im already searching how to do that. Once it will work as I wish, I will add your names to my comments ( I think this is better than any "thank you" ) in the code, to remind me of your kind help(: Il giorno mercoledì 7 luglio 2021 alle 14:01:33 UTC+2 mlevi...@gmail.com ha scritto: > [Sorry forgot to hit "Reply all"] > > Are you trying to cast cmd.Stdout here? > What you can do is: > buf := new(bytes.Buffer) > cmd.Stdout = buf // buf is an io.Writer so this is fine > > but I don't get the point of the data := foo? > > Maybe, before trying to convert a whole complex program in Python to a > whole working program in Go, you should take time to familiarize yourself > with the language. > Go through the Go tour <https://tour.golang.org/welcome/1>, read a little > of the specs, have yourself code some small, simple programs that don't > require using lots of std packages at once... > > Once you are familiar with the language constructs, which I have to say > are pretty different from Python's, you will have a better understanding of > where to start and how to implement your program. Otherwise I think this > will all only get you confused. > And understanding at least the important basics of Go will help you > explain your pain points here, if any remains :) > > Hope this helps, > > Le mer. 7 juil. 2021 à 12:41, LetGo <non3...@gmail.com> a écrit : > >> One of these is this: >> ... >> buf := new(bytes.Buffer) >> foo := buf(cmd.Stdout) // this line is 87 >> data := foo >> var i int >> ... >> >> pkg/conn.go:87:20: cannot call non-function buf (type *bytes.Buffer) >> Il giorno mercoledì 7 luglio 2021 alle 12:10:03 UTC+2 LetGo ha scritto: >> >>> I tried also both of them, but I got stuck into a loop of errors again.. >>> probably I coded in the wrong way >>> >>> Il giorno mercoledì 7 luglio 2021 alle 11:50:51 UTC+2 Brian Candler ha >>> scritto: >>> >>>> It makes no sense to convert an io.Writer to a string. >>>> >>>> io.Writer is an interface: any type which has a Write() method. So you >>>> can pass a string *to* a writer, to get it written somewhere, by calling >>>> the Write() method. In general, you can't get a string *from* a writer. >>>> If you google "go io.Writer" you'll get lots of tutorials and examples. >>>> >>>> Depending on your application though, you might want to create a >>>> bytes.Buffer <https://golang.org/pkg/bytes/#Buffer> or strings.Builder >>>> <https://golang.org/pkg/strings/#Builder> object, both of which are an >>>> io.Writer. The written data gets appended to a buffer that you can read >>>> later. >>>> >>>> On Wednesday, 7 July 2021 at 10:07:19 UTC+1 LetGo wrote: >>>> >>>>> Thanks for your answer!(: >>>>> You are right, sorry! >>>>> This is the code: https://play.golang.org/p/zEZ2HIUNffs >>>>> >>>>> About the lines, wow! Yes, you got them! ahah >>>>> About the errors, I tried to convert ( cmd.Stdout ) io.Write to bytes/ >>>>> strings, but.. I have then entered into a loop of errors... >>>>> >>>>> >>>>> >>>>> Il giorno martedì 6 luglio 2021 alle 21:32:10 UTC+2 Brian Candler ha >>>>> scritto: >>>>> >>>>>> You haven't shown which lines 75, 76 and 83 correspond to. It's >>>>>> easier if you put the whole code on play.golang.org, and we'll be >>>>>> able to point to the error. >>>>>> >>>>>> But I'm guessing it's this: >>>>>> data := cmd.Stdout >>>>>> ... >>>>>> n := int(math.Min(float64(rand.Intn(len(data))), >>>>>> float64(len(data)))) << line 75? >>>>>> d := data[i : i+n] << line 76? >>>>>> ... >>>>>> if i >= len(data) { << line 83? >>>>>> >>>>>> If I'm right, the compiler is saying: cmd.Stdout (which you assigned >>>>>> to 'data') is of type io.Writer. It's not a string; you can't take >>>>>> len(...) of an io.Writer, nor can you slice it. >>>>>> >>>>>> On Tuesday, 6 July 2021 at 16:03:26 UTC+1 LetGo wrote: >>>>>> >>>>>>> I think I made some progress.... I think. Is it right what I'm doing >>>>>>> ? >>>>>>> >>>>>>> ................ >>>>>>> cmd.Stdin = conn >>>>>>> // cmd.Stdout = conn >>>>>>> // data := []byte(cmd.Stdout) >>>>>>> data := cmd.Stdout >>>>>>> var i int >>>>>>> for { >>>>>>> n := int(math.Min(float64(rand.Intn(len(data))), >>>>>>> float64(len(data)))) >>>>>>> d := data[i : i+n] >>>>>>> i += n >>>>>>> time.Sleep(400 * time.Millisecond) >>>>>>> d = conn >>>>>>> >>>>>>> if i >= len(data) { >>>>>>> break >>>>>>> } >>>>>>> } >>>>>>> cmd.Stderr = conn >>>>>>> cmd.Run() >>>>>>> ............................ >>>>>>> >>>>>>> But when I try to build I get these errors: >>>>>>> >>>>>>> conn.go:75:46: invalid argument data (type io.Writer) for len >>>>>>> conn.go:76:16: cannot slice data (type io.Writer) >>>>>>> conn.go:83:22: invalid argument data (type io.Writer) for len >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Il giorno martedì 29 giugno 2021 alle 19:37:04 UTC+2 LetGo ha >>>>>>> scritto: >>>>>>> >>>>>>>> Thank you guys for all your answers and suggestions! >>>>>>>> I really appreciate! >>>>>>>> Sorry about the screenshots, it was the only way to make the >>>>>>>> packets "human readable" >>>>>>>> How could you code that kind of implementation based on your >>>>>>>> knowledge and skill? >>>>>>>> I have noone of these in golang ahah as I said, im too newbie to do >>>>>>>> all this alone! >>>>>>>> Also not working examples ( if they throw an error I don't care, >>>>>>>> based on my code are fine! >>>>>>>> These examples could rapresent a great start from me!(: >>>>>>>> >>>>>>>> >>>>>>>> Il giorno martedì 29 giugno 2021 alle 19:00:06 UTC+2 >>>>>>>> jesper.lou...@gmail.com ha scritto: >>>>>>>> >>>>>>>>> On Tue, Jun 29, 2021 at 5:24 PM LetGo <non3...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Thanks for the answer! (: >>>>>>>>>> In python it was straightforward to implement and it works like a >>>>>>>>>> charm. It sends small packets with delay between each other without >>>>>>>>>> even >>>>>>>>>> care if it is UDP or TCP: >>>>>>>>>> >>>>>>>>>> >>>>>>>>> Beware! This is an assumption that will break at some point in >>>>>>>>> time. Currently the delay and the OS makes things straightforward for >>>>>>>>> you. >>>>>>>>> But TCP doesn't behave like you expect, and you are very likely to >>>>>>>>> run into >>>>>>>>> trouble if the machine, the network, or the system starts taking >>>>>>>>> additional >>>>>>>>> load. >>>>>>>>> >>>>>>>>> You need to frame the data. A good way is to use 4 bytes as a size >>>>>>>>> (unsigned 32 bit integer), followed by a payload of that size. You >>>>>>>>> can then >>>>>>>>> avoid this becoming an uncontrolled explosion in your software at a >>>>>>>>> later >>>>>>>>> date. You can also close connections early if too large messages get >>>>>>>>> sent, >>>>>>>>> etc. >>>>>>>>> >>>>>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/466d016b-b90b-4505-b4a8-7e5fc62679b4n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/466d016b-b90b-4505-b4a8-7e5fc62679b4n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/0f12076e-f325-4583-ba85-857084aec83dn%40googlegroups.com.