Ну, во-первых, поверьте сообщению об ошибке: если вы получаете «Отказ в соединении», предположите, что другой конец отказывает в соединении.Тогда возникает вопрос: почему?
Почти всегда оказывается, что это просто "глупая ошибка".Прежде чем что-либо делать глубоко, убедитесь, что:
- IP-адреса и порты верны
- нет никаких свободных процессов, также пытающихся использовать порт 3557 (хотя это обычно дает другойсообщение об ошибке)
- , что ваша серверная сторона работает и находится в состоянии ожидания ввода-вывода, прежде чем пытаться подключиться
- , что оба конца работают при запуске на том же 1013 * machine.
Предполагая, что все это работает, затем используйте telnet (1) , чтобы попытаться подключиться к серверу.Если это сработает, telnet должен быть в состоянии прочитать другой конец.
Commend на самом деле принимает два аргумента, хост и порт:
$ telnet 192.168.1.103 3557
должен подключиться к серверу на либо машина, и, конечно,
$ telnet localhost 3557
должны работать в серверной системе.
Если программы работают, пока вы находитесь в одной системе, ноне удаленно, у вас есть какая-то проблема с маршрутизацией или брандмауэром.(Убедитесь, что у вас нет «умного» коммутатора, пытающегося ограничить определенные порты вне того, что делает ваш брандмауэр.)
Если программы не будут работать в той же системе, убедитесь, что серверждет ввода / вывода и попробуйте трюк telnet.Если сервер не остановлен в ожидании ввода / вывода, прочитайте справочную страницу для флагов в вызовах вашей библиотеки.Никто никогда не помнит их всех;некоторые из них имеют таинственные побочные эффекты, которые вы не заметите.
Если сервер остановлен в ожидании ввода-вывода и telnet не подключается, добавьте несколько printfs, чтобы убедиться, что он работает так, как вы планируете.в частности, взгляните на значения возврата accept
и recv
- если у вас есть программа, которая не работает, и вы не протестировали все коды возврата, вы можете сделать ставку(это один из законов Мерфи, без сомнения), что один из вызовов, которые вы не тестируете, не работает.
Если вы можете подключиться через telnet и набрать данные наУспешно, перейдите к Java.Попробуйте сделать os
a FileOutputStream
и посмотрите, получится ли то, что вы ожидаете.