Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: G++ тестовый сервер (слушаем порт, отвечаем) - проблема с сетью  (Прочитано 3290 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
и так, дорогие гуру предлагаю вам код тестового сервера - начальный практически учебный вариант...

(Нажмите, чтобы показать/скрыть)

задача данного сервера получить от клиента что либо, сравнить с заранее заданной строкой (в данном случае "hello") и ответить если это необходимо...
и вот тут возникает непонятная такая гадость:
при подключении телнетом с этого же компьютера на котором запушен сервер все работает правильно.
но подключиться с другого компьютера не получается... выглядит это так: телнет соединяется, но при попытке что либо ввести - соединение рвется на стороне сервера...
сервер фиксирует то, что к нему пытались подключиться, но не выводит ни одной из известных ему ошибок...
 

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Вот это нафига? Чисто чтобы gcc не собирал?
#include <istream>
#include <ostream>      //для cout;
#include <iostream>
using namespace std;            //

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
это для отладки использовал когда ошибку проверял... комментировать и удалять не стал, так как потом все равно понадобятся
#include <istream>  - используется и сейчас...

в любом случае это не ведет к данной проблеме

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Пишите серверы на питоне или Java.
Будет легкий код, многопоточность, асинхронность и безпроблеммность с подчисткой.
В крайнем случае С++, но ни в коем случае на С. Это будет глюкало еще то.
Для примера на питоне. Дернул, не глядя, из загашника.
(Нажмите, чтобы показать/скрыть)
Могу дать
и на Java
и на C# (если религия позволяет).
Вариант 2.
Используйте утилиту netcat.
Это если асинхронности не надо.
« Последнее редактирование: 02 Марта 2011, 12:28:27 от alexander.pronin »

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
g++ это и есть С++

пример на С# будет интересно глянуть (если не затруднит в личку)

но все равно хочется все же понять в чем проблема...

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Проблема в непонимании чем отличаются Си и С++ =) всё что ты написал написано на Си и никак иначе

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Держите на С#.
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 02 Марта 2011, 13:16:17:
Проблема в непонимании чем отличаются Си и С++ =) всё что ты написал написано на Си и никак иначе
+1

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
но подключиться с другого компьютера не получается...
telnet какой системы? У тебя же в коде нет строкового буффера, так вот если телнет будет передавать по одному символу, то никогда не сработает strstr(msg, "hello")

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Вот на Java что-то нашел.
(Нажмите, чтобы показать/скрыть)

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
но подключиться с другого компьютера не получается...
telnet какой системы? У тебя же в коде нет строкового буффера, так вот если телнет будет передавать по одному символу, то никогда не сработает strstr(msg, "hello")
1 телнет windows 7 (пробовал XP - аналогично)...
2 я и не пытаюсь передать по 1 символу... я просто слово набрать не могу... т.е. локально я могу написать тоже "hello" и телнет его передаст... то с другого компьютера связь разрывается когда после подключения я пытаюсь набрать любой символ... он даже в телнете уже не печатается... а телнет пишет связь разорвана...

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Да и дело в том, что локально и удалённо ты используешь разные telnet-программы, которые себя ведут по-разному. В одной реализации ты набираешь строчку, и она передаётся одним пакетом, а в другой, ты набираешь строчку, а она передаётся по мере набора.. Сам посмотри: sudo tcpdump -ni any tcp port 51231

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
Проблема в непонимании чем отличаются Си и С++ =) всё что ты написал написано на Си и никак иначе
если вас не затруднит сообщите мне пожалуйста "Правильный код" для С++ с подобным функционалом... в вашем понимании


Да и дело в том, что локально и удалённо ты используешь разные telnet-программы, которые себя ведут по-разному. В одной реализации ты набираешь строчку, и она передаётся одним пакетом, а в другой, ты набираешь строчку, а она передаётся по мере набора.. Сам посмотри: sudo tcpdump -ni any tcp port 51231

ух ты...а вот интересно это особенность telnet под Windows  конкретно или особенность потому что в сети? а не локально...

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля

Оффлайн nucleon

  • Автор темы
  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
спасибо... хотябы причина ошибки понятна...

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
это особенность telnet под виндовс
Да.
Не удержался.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 02 Марта 2011, 14:59:23 от alexander.pronin »

 

Страница сгенерирована за 0.078 секунд. Запросов: 25.