![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
Знаю, после прочтения заголовка хочется послать тему куда подальше... ну, например, в Delphi: Сети. Но есть одна оговорка - на чистом WinApi. Так что, не судите строго - выбор между ветками был не из легких..
Конкретно интересует реализация обмена информации между двум приложениями в локальной сети. Возможно ли это реализовать только средствами WinApi? Какие именно надо использовать протоколы и что вообще надо использовать? Зашел на msdn в раздел Networking и утонул, с чего начать? |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
WSAStartup ![]() Сокеты 1 Сокеты 2 (Кодинг блокирующих сокетов) Сокеты 3 (Кодинг неблокирующих сокетов) Сокеты 4 (Использование DScan) Это сообщение отредактировал(а) MetalFan - 27.6.2007, 07:58 -------------------- There are always someone smarter than you... |
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
Спасибо, буду изучать. Только вопрос, не помешает ли моим экспериментам тот факт, что сеть работает через роутер? Меняет ли это способ роботы с ней?
|
|||
|
||||
Coder |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: нет Всего: 11 |
Клиентской программе наврятли. А вот серверу, которой будет слушать порт, скорее всего помешает. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
Почитал, поразбирался, покодил - не работает прога. В связи этим есть вопросы. Как я понимаю, самая простая модель сокетного клиент-серверного приложения такова: клиент создает свой сокет(ClinetSock1), через который соединяется с сервером. Сервер, в свою очередь, прослушивает свой сокет(ServerSock1), созданный ранее, и, допустим, принимает запрос клиента, создавая этим самым себе новый сокет(ServerSock2) для общения с клиентом. Вопрос: на какой сокет должен слать дальше данные сервер, и из какого принимать? Те же вопросы и для клиента..
|
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
![]() PS Полное руководство по сетевому программированию для разработчиков игр. - рекомендую по сабжу, правда на С, но все отлично описано. |
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
Что касается роутера, вы оказались правыми : программа тестировалась в интернете и при запуске клиента все отлично работало, сервера - нет. Чтобы исправить такой ход дел, надо открыть порт, используемый сервером, на роутере? Где вообще можно почитать о работе сети, чтобы не было непонятных моментов при работе с сокетами?
Это сообщение отредактировал(а) bokul - 29.6.2007, 22:41 |
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
А как сделать поддержку одновременного приема и отсылки данных в клиент-сервере? Т.е. мы не знаем заранее какая будет очередность в передачи данных: может быть мы будем только получать пакеты, а может и только отправлять, или же все в перемешку. Цикл вроде:
Код
не подходит, даже если будет проверки, ведь recv блочная функция и пока не придут данные, прога ни на команду не сдвинется, а может понадобится отправка данных в этот момент. Потоки разрешат проблему? Это сообщение отредактировал(а) bokul - 3.7.2007, 01:43 |
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
АУУУУУУУУУ! Уделите, пожалуйста, минутку своего время - 5 дней и никакой реакции, или тут не принято отвечать на вопросы новичков?
|
|||
|
||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
![]() |
|||
|
||||
MetalFan |
|
||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
видимо необходимо проверить наличие данных во входном буфере перед вызовом recv.
либо вынести работу в отдельный поток... про потоки есть отдельная тема p.s. так же могу предположить (ибо сам с сокетами на WinApi не работал), что можно "протестить" сокет на наличие данных с пом. ioctlsocket примерно так:
Это сообщение отредактировал(а) MetalFan - 4.7.2007, 09:58 -------------------- There are always someone smarter than you... |
||||
|
|||||
bokul |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 22.7.2006 Репутация: нет Всего: нет |
![]() ![]()
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
bokul, а проверил? мало-ли что написано)
-------------------- There are always someone smarter than you... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |