[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 <non3co...@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+unsubscr...@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/CAL4P9zwrNKTRvL1dC7%2BuWB4aMAE311_GmMLQAShQTrB_HJWoHw%40mail.gmail.com.

Reply via email to