Пожалуйста, обратите внимание, что пользователь заблокирован
Думаю некоторые давно ждали выпуск. Помнится кому то даже предлагали ее перевести
https://www.sendspace.com/file/b0azpp
https://www.sendspace.com/file/b0azpp
Привет! Линк умер, поэтому, если есть возможность, перезалей пожалуйста)
перезалил же .перезалеите у кого есть
есть на русском ?
я не просил перезаливать , спросил на русском есть?перезалил же .
или вам на домашний адрес почтой россии выслать ?
Посмотреть вложение 21816
???
Посмотреть вложение 21817
я не просил перезаливать , спросил на русском есть?
Нахрена читать профильную литературу на русском языке? Читайте на языке автора. Или хотя бы читая на русском, сравнивайте с оригиналом, может быть много упущений.есть на русском ? https://anonfiles.com/Bek8Kcqdub/black-hat-go-programming-pentesters_pdf
package main
import (
"fmt"
"net"
"time"
)
func main() {
var name string
fmt.Print("Enter the address: ")
fmt.Scanf("%s\n", &name)
for i := 1; i <= 1024; i++ {
time.Sleep(30 * time.Millisecond)
go func(j int) {
address := fmt.Sprintf("%s:%d", name, j)
timeout := net.Dialer{Timeout: 1*time.Second}
conn, err := timeout.Dial("tcp", address)
if err != nil {
return
}
conn.Close()
fmt.Printf("%d open\n", j)
}(i)
}
}
Сам начинаю изучать Golang по этому хочу внести комментарий по поводу раздела Sacnner tcp из учебника.
Код:package main import ( "fmt" "net" "time" ) func main() { var name string fmt.Print("Enter the address: ") fmt.Scanf("%s\n", &name) for i := 1; i <= 1024; i++ { time.Sleep(30 * time.Millisecond) go func(j int) { address := fmt.Sprintf("%s:%d", name, j) timeout := net.Dialer{Timeout: 1*time.Second} conn, err := timeout.Dial("tcp", address) if err != nil { return } conn.Close() fmt.Printf("%d open\n", j) }(i) } }
В данном примере добавлен time.sleep без которого код который в учебнике не будет работать, это обязательно для go рутин.
Также добавил timeout чтобы программа долго не ждала соединение с сервером.
Еще я добавил ввод адреса для сканирования через консоль.
Если ты не изучааешь GO то когда откроешь книгу , или офф мануал то увидешь для чего там нужен sleep , а sync.WaitGroup это одно из, так что не надо свои 5 копеек вставлять пока не разобрался полностью .Я не изучаю go, но это чушь полная. Ты ставишь слип между вызовами горутин, но главный поток не ожидает их завершения. В книге дальше по тексту написано почему так, и что надо использоваь sync.WaitGroup
На русском у издательства Питер продается только бумажная версия. Возможно скоро выпустят pdf