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.

Reply via email to