Võrgurakendused II - ITV0040
#2
Отправлено 12 сентября 2011 - 23:43
http://lambda.ee/ind...vitusi_ja_ideid
Пока только понял,что обмен данными ведется на сокетах,а где и что храниться должно - непонятно.Причем тут вообще http,если НЕТУ СЕРВЕРА.Каким образом оно должно отслеживать запросы ? Или он хочет напрямую через сокеты (бэкконнект) ? Желательно как можно подробнее,а то через слово понятно...в общих чертах только проясняется
Чат у меня представляется так:
1) WinApi окошко по центру.
2) Справа Мемо,форма под мемо или окошко.
3)Ниже центрального окошка поле ввода для символов,смайлов и т.д.
4)Справа выводятся айпишники и порты или что там надо вывести.
5)справа от поля ввода кнопка отправить сообщение или что-то в этом духе : )
Ещё вроде он пишет мол за доп. пункты можно и проблему с фаирволлом и закрытыми портами решить.Если так,то решения могут быть такими:
1) Если имеются ввиду Windows Firewalls,то добавить имя приложения(на винапи) в список ACL который разрешит подключение.
2) Через ShellExecute консоли вызвать сервис и через него добавить программу.
3) Использовать прокси сервер(не понимаю,при чем тут фаирволл и прокси сервер,порты-то локальные должны быть открыты).
Надеюсь,я не зря разглагольствовал.Пожалуйста,помогите разобраться...
Сообщение изменено: Salakando (12 сентября 2011 - 23:57 )
#3
Отправлено 13 сентября 2011 - 12:15
Пожалуйста,кто-нибудь,озвучьте на русском требования,предъявляемые к практикуму 1!
http://lambda.ee/ind...vitusi_ja_ideid
Пока только понял,что обмен данными ведется на сокетах,а где и что храниться должно - непонятно.Причем тут вообще http,если НЕТУ СЕРВЕРА.Каким образом оно должно отслеживать запросы ? Или он хочет напрямую через сокеты (бэкконнект) ? Желательно как можно подробнее,а то через слово понятно...в общих чертах только проясняется
Чат у меня представляется так:
1) WinApi окошко по центру.
2) Справа Мемо,форма под мемо или окошко.
3)Ниже центрального окошка поле ввода для символов,смайлов и т.д.
4)Справа выводятся айпишники и порты или что там надо вывести.
5)справа от поля ввода кнопка отправить сообщение или что-то в этом духе : )
Ещё вроде он пишет мол за доп. пункты можно и проблему с фаирволлом и закрытыми портами решить.Если так,то решения могут быть такими:
1) Если имеются ввиду Windows Firewalls,то добавить имя приложения(на винапи) в список ACL который разрешит подключение.
2) Через ShellExecute консоли вызвать сервис и через него добавить программу.
3) Использовать прокси сервер(не понимаю,при чем тут фаирволл и прокси сервер,порты-то локальные должны быть открыты).
Надеюсь,я не зря разглагольствовал.Пожалуйста,помогите разобраться...
нафига здесь ВипАПИ? ты пишешь на АНСИ С?
ГУИ не нужен, соотв. тогда и ВинАПИ. Хранить нужно данные в промежуточной памяти, т.е. стэк-ом в РАМ. Единственное - изначально сделать файл, куда занести некоторые данные привязки хостов и их идентификаторов (имя - айпи адресс). Его апп должен прочитать при запуске. Про сокеты верно. Стандартный набор TCP/IP, без всяких RAW_SOCKETS. Центрального сервера нет, поэтому и суть задания - P2P. В идеале - запускать нужно будет по одному приложению на каждой машине. Как показывает практика - удаётся это в редких случаях, так как у большинства всё написано криво и коряво, хотя протокол один (поэтому, просто будешь демонстрировать работу своего приложения либо на локальном хосте, либо один и тот-же апп *своей сборки* запустишь на разных компах). Почему ХТТП? Вообще, он здесь абсолютно не нужен - он взят для спорного удобства и простаты, дабы упростить серверную часть коммутации. Т.е. это база для предоставления возможности обратиться к сервису одного из пииров. По сути - ничего более как "listening socket" и пары-другой стандартных ответов (эррор коды). Поэтому, можно смело лепить отсебятину и писать с нуля, или, наоборот, скопировать его пример мини-сервера на яве и кастрировать. Опять-же - здесь просто взята аналогия ХТТП, хотя сам протокол, это чистой воды homebrew.
Одно замечание - приложение, по большому счёту, должно работать как UDP. Т.е. без прямых установленных соединений. Кинул запрос - соединение разорвал. Т.е. одновременно как даемон, так и как клиент. Асинхронно. Это не дуплексная связь.
Про файерволл это отдельная история. Её нужно показывать. Порты в локалке закрыты, т.к. по умолчанию на каждом компе включен виндооза фаявалл. Т.е. входящие соединения - блокируются. Могу сказать, что кодить ничего не нужно (если нет особого желания сделать промежуточный сервер-туннель) - решается эта проблема незамысловатой хитростью или вообще просто вниманием к деталям. Здесь расписывать нет смысла. Если интересует - напиши ПМ, думаю найду минут 10 как-нибудь в айти мая.
Сообщение изменено: quiz (13 сентября 2011 - 12:26 )