Передача сообщений TCP/IP
Модераторы: Olej, bellic, vikos
Передача сообщений TCP/IP
Здравствуйте. Просьба о помощи. Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Передача сообщений TCP/IP
Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Отправить можно разными способами. Зависит, в первую очередь, от номера порта TCP (протокола, см. в /etc/services).
Для многих портов/протоколов существуют штатные клиенты.
P.S. Я выделил ваши сообщения в отдельную тему, потому что это о другом.
Re: Передача сообщений TCP/IP
Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.Olej писал(а):Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Отправить можно разными способами. Зависит, в первую очередь, от номера порта TCP (протокола, см. в /etc/services).
Для многих портов/протоколов существуют штатные клиенты.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Передача сообщений TCP/IP
Что значит "не работоспособны в обычном режиме"?kolesmen писал(а):Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.Olej писал(а):Вообще то, сообщения отправляются от клиента к серверу, но не наоборот.kolesmen писал(а):Подскажите, пожалуйста, как отправить с сервера элементарное сообщение по протоколу tcp с гарантированной доставкой клиенту?
Что это за режим такой? (нет терминалов? не запущена терминальная подсистема и X11? ...)
И в каком другом режиме они работоспособны?
Как бы вы ни называли свои клиентские хосты кластера, для проверки канала они будут выступать как сервера какого-то протокола, а ваша зондирующая программа (консольная) клиент.
И на удалённых хостах вашего кластера должны быть запущены какие-то серверные программы TCP протокола ... иначе никто вам и ни на что не будет откликаться.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Передача сообщений TCP/IP
Не сильно понятно что дополнительно даст вам использование протокола "с гарантированной доставкой" (TCP) по сравнению с любым другим способом (UDP, ICMP, ...).kolesmen писал(а):Как бы построена кластерная система на основе CentOS и клиентские машины не работоспособны в обычном режиме, поэтому нужно просто проверить канал связи с сервера с ними с гарантированной доставкой.
Почему простейшего ping для этого недостаточно?
В LAN (а ваша "как бы кластерная система" работает в LAN почти наверняка, не разнесены же ваши хосты между городами?) пакеты IP, ICMP, UDP практически никогда не теряются, а "сбрасывание" их принимающей стороной - это нужно ещё сильно потрудиться, чтобы смоделировать такую ситуацию.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Передача сообщений TCP/IP
А если вам уж совсем хочется проверять канал именно так, то можете попробовать:Olej писал(а):И на удалённых хостах вашего кластера должны быть запущены какие-то серверные программы TCP протокола ... иначе никто вам и ни на что не будет откликаться.
1. Простейший способ - использовать ssh, для этого у вас на удалённых хостах должен работать sshd, что часто так и бывает;
2. Используйте что-то из "лёгких" stream (TCP) протоколов из /etc/services (echo, chargen, time, daytime) а в качестве клиента (для посылки запросов) - элементарный telnet. Для этого, естественно:
- telnet у вас должен быть установлен:
Код: Выделить всё
olej@notebook:/etc/xinetd.d$ which telnet
/usr/bin/telnet
- если нет, то нужно установить, что-то типа (в RPM-дистрибутиве аналогично):
Код: Выделить всё
root@notebook:/etc# apt-get install telnet
...
Обрабатываются триггеры для man-db …
Настраивается пакет telnet (0.17-36) …
update-alternatives: используется /usr/bin/telnet.netkit для предоставления /usr/bin/telnet (telnet) в автоматический режим
Код: Выделить всё
olej@notebook:~$ ps -A | grep netd
2422 ? 00:00:00 xinetd
Код: Выделить всё
# This is the tcp version.
service echo
{
# disable> = yes
disable>= no
...
- после чего нужно заставить запущенный xinetd перечитать конфигурацию, например, так:
Код: Выделить всё
olej@notebook:/etc/xinetd.d$ sudo kill -s HUP 2422
- всё, можете с помощью telnet проверять свой удалённый хост (естественно, подставив IP этого хоста):
Код: Выделить всё
olej@notebook:/etc/xinetd.d$ telnet 127.0.0.1 7
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
1
1
2
2
^]
telnet> quit
olej@notebook:/etc/xinetd.d$
Код: Выделить всё
olej@notebook:/etc/xinetd.d$ telnet 127.0.0.1 13
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
06 DEC 2013 13:06:19 EET
Connection closed by foreign host.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость