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
>>>>>> [email protected] ha scritto:
>>>>>>
>>>>>>> On Tue, Jun 29, 2021 at 5:24 PM LetGo <[email protected]> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/466d016b-b90b-4505-b4a8-7e5fc62679b4n%40googlegroups.com.