Поиск тонких клиентов в сети

Темы, которые не попадают в остальные категории.
Ответить
erasty
Сообщения: 19
Зарегистрирован: Пт сен 27, 2024 8:54 am

Поиск тонких клиентов в сети

Сообщение erasty »

Добрый день, подскажите, можно ли найти все активные тонкие клиенты в сети? Например по какому-то уникальному порту, который слушает только wtware или т.п
Мне нужно собирать список активных терминалов и выводить в табличку.
Спасибо
Последний раз редактировалось erasty Пн май 19, 2025 3:14 pm, всего редактировалось 1 раз.
aka
Разработчик
Разработчик
Сообщения: 12113
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Поиск тонаких клиентов в сети

Сообщение aka »

Можно. Разослать широковещательный UDP пакет, состоящий из одного байта 0x01, на порт 779. Все активные тонкие клиенты ответят. Так делает втваревый конфигуратор, когда запускается.

Чем собираешься рассылать?
erasty
Сообщения: 19
Зарегистрирован: Пт сен 27, 2024 8:54 am

Re: Поиск тонаких клиентов в сети

Сообщение erasty »

aka писал(а): Вс май 18, 2025 10:48 pm Можно. Разослать широковещательный UDP пакет, состоящий из одного байта 0x01, на порт 779. Все активные тонкие клиенты ответят. Так делает втваревый конфигуратор, когда запускается.

Чем собираешься рассылать?
Собирался рассылать скриптом на golang, по типу такого:

Код: Выделить всё

func main() {
	// бродкаст
	broadcastAddr, err := net.ResolveUDPAddr("udp", "192.168.1.255:779")
	if err != nil {
		fmt.Println("Ошибка разрешения адреса:", err)
		return
	}
	// Создаем UDP-соединение
	conn, err := net.DialUDP("udp", nil, broadcastAddr)
	if err != nil {
		fmt.Println("Ошибка создания соединения:", err)
		return
	}
	defer conn.Close()

	message := []byte{0x01}
	_, err = conn.Write(message)
	if err != nil {
		fmt.Println("Ошибка отправки пакета:", err)
		return
	}

	conn.SetReadDeadline(time.Now().Add(2 * time.Second))

	buffer := make([]byte, 1024)
	respondedIPs := make(map[string]struct{})
	for {
		n, addr, err := conn.ReadFromUDP(buffer)
		if err != nil {
			break
		}
		respondedIPs[addr.IP.String()] = struct{}{}
		fmt.Printf("Ответ от %s: %s\n", addr.IP.String(), buffer[:n])
	}
	// Выводим список уникальных IP-адресов
	fmt.Println("Уникальные IP-адреса, которые ответили:")
	for ip := range respondedIPs {
		fmt.Println(ip)
	}
}
aka
Разработчик
Разработчик
Сообщения: 12113
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Поиск тонаких клиентов в сети

Сообщение aka »

:shock:
Сработало? На С для отперавки броадкастов ещё опцию SO_BROADCAST надо прописать сокету.
erasty
Сообщения: 19
Зарегистрирован: Пт сен 27, 2024 8:54 am

Re: Поиск тонаких клиентов в сети

Сообщение erasty »

aka писал(а): Пн май 19, 2025 12:49 pm :shock:
Сработало? На С для отперавки броадкастов ещё опцию SO_BROADCAST надо прописать сокету.
Пока в процессе, как доделаю напишу если интересно
Ответить

Вернуться в «Остальное»