Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win_Sock / 14 сообщений из 14, страница 1 из 1
21.03.2006, 14:42
    #33614550
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Пишу клиент-серверное приложение с помощью интерфейса сокетов (TCP)
создал сокет на сервере и запустил его на прослушку порта
создал сокет на клиенте, коннекчусь к серверу, клиент регистрируется на сервере!
Эти два приложения должны обмениваться файлами и сообщениями между собой!
На клиенте я создал обработчик команд с сервера, и есть идея, что такой же обработчик надо создать и на сервере.
Подскажите, для этого надо создавать дополнительный сокет (для прослушки команд клиента) или хватит одного, созданного на сервере?
Или у Вас есть какие-либо идеи, заранее благодарен!!!!
Заранее спасибо!!!!!!
...
Рейтинг: 0 / 0
21.03.2006, 14:52
    #33614594
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
bender2002Пишу клиент-серверное приложение с помощью интерфейса сокетов (TCP)
создал сокет на сервере и запустил его на прослушку порта
создал сокет на клиенте, коннекчусь к серверу, клиент регистрируется на сервере!
Эти два приложения должны обмениваться файлами и сообщениями между собой!
На клиенте я создал обработчик команд с сервера, и есть идея, что такой же обработчик надо создать и на сервере.
Подскажите, для этого надо создавать дополнительный сокет (для прослушки команд клиента) или хватит одного, созданного на сервере?
Или у Вас есть какие-либо идеи, заранее благодарен!!!!
Заранее спасибо!!!!!!
Вообще-то по идее наоборот все делается - сервер обслуживает комманды клиента. Для обратных вызовов наиболее гармонично бы сделать второе соединение или делать UDP - нотификации о том, что клиент должен как-то обновить свое состояние или сделать конкретную комманду. Правда, такой протокол не будет нормально тоннелироваться через NAT / IP Masquerading. Если нужна проходимость через NAT, то наверное нужно передавать серверу идентификатор запроса чтобы он в передавал его в ответ, чтобы понять что к чему относится. Для ответов, которые ни к чему не относятся и являются коммандами от сервера клиенту надо будет передавать какой-то специальный идентификатор.
...
Рейтинг: 0 / 0
21.03.2006, 14:57
    #33614614
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Сергей Ильич
У меня просто задание такое, что между клиентом и сервером практически стираются границы!
Я просто не знаю как сделать дополнительное соединение, а если клиентов несколько будет.... как это обработать
...
Рейтинг: 0 / 0
21.03.2006, 15:05
    #33614643
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Сергей ИльичВообще-то по идее наоборот все делается - сервер обслуживает комманды клиента. Для обратных вызовов наиболее гармонично бы сделать второе соединение.
Хватит и одного. Обо всех подключенных клиентах на сервере есть информация. Т.е. сервер всегда может послать команду кокретному клиенту. Единственная неприятность в некоторой ассиметричности. По-видимому надо разработать логический протокол обмена, т.е. что кто посылает и как реагирует на входящие.
...
Рейтинг: 0 / 0
21.03.2006, 15:10
    #33614664
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
А как мне отослать сообщение или файл серверу, сервер же должен распознавать их
...
Рейтинг: 0 / 0
21.03.2006, 15:13
    #33614674
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
В произвольный момент времени
...
Рейтинг: 0 / 0
21.03.2006, 15:24
    #33614701
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
bender2002А как мне отослать сообщение или файл серверу, сервер же должен распознавать их
Смотри, как в HTTP организована загрузка файлов на сервер (Например, присоединение аттачей к письмам в веб-интерфейсах).
...
Рейтинг: 0 / 0
21.03.2006, 15:25
    #33614705
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
bender2002А как мне отослать сообщение или файл серверу, сервер же должен распознавать их
Делаешь парсер запросов.
Например, при http-ответе сервера в заголовке ответа прописывается тип передаваемой информации: приложение, текстовый файл, страница html и т.д.
Браузер (клиент) по заголовку распознает тип информации и соответственно ее обрабатывает...
...
Рейтинг: 0 / 0
21.03.2006, 17:51
    #33615197
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Станислав C. bender2002А как мне отослать сообщение или файл серверу, сервер же должен распознавать их
Делаешь парсер запросов.
Например, при http-ответе сервера в заголовке ответа прописывается тип передаваемой информации: приложение, текстовый файл, страница html и т.д.
Браузер (клиент) по заголовку распознает тип информации и соответственно ее обрабатывает...
Не мне нужно что-то сделать на клиенте, чтобы отослать серверу файл или сообщение, я не могу понять как мне это сделать
...
Рейтинг: 0 / 0
22.03.2006, 10:45
    #33616357
_Балтика
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
bender2002
Не мне нужно что-то сделать на клиенте, чтобы отослать серверу файл или сообщение, я не могу понять как мне это сделатьЕсли я правильно понял...
После соединения с сервером, клиент шлет ему какой-нибудь номер порта и слушает этот порт; сервер коннектится на этот порт (хост известен). Все.
...
Рейтинг: 0 / 0
22.03.2006, 11:19
    #33616497
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
_БалтикаПосле соединения с сервером, клиент шлет ему какой-нибудь номер порта и слушает этот порт; сервер коннектится на этот порт (хост известен). Все.
Ну это через задницу. Если клиент соединился с сервером он может послать ему что угодно через TClientWinSocket->SendBuf и принимать данные через событие OnRead. Сервер всегда имееет список подключенных клиентов Socket->Connections[] и также может посылать (SendBuf) и принимать данные (событие OnClientRead). Т.о. есть все чтобы гонять пакеты в обе стороны.
...
Рейтинг: 0 / 0
22.03.2006, 11:34
    #33616564
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Привет, pandrew!

p> TClientWinSocket->SendBuf и принимать данные через событие
p> OnRead

бросьте вы эти дурацкие T*WinSocket, используйте нормальные библиотеки

---------------------
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
22.03.2006, 11:54
    #33616652
_Балтика
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
pandrewНу это через задницу. Если клиент соединился с сервером он может послать ему что угодно через TClientWinSocket->SendBuf и принимать данные через событие OnRead. Сервер всегда имееет список подключенных клиентов Socket->Connections[] и также может посылать (SendBuf) и принимать данные (событие OnClientRead). Т.о. есть все чтобы гонять пакеты в обе стороны.Через задницу как-раз TClientWinSocket. Я вообще-то Ws2_32.lib имел ввиду.
...
Рейтинг: 0 / 0
22.03.2006, 16:41
    #33617871
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win_Sock
Спасибо всем, я вроде бы разобрался
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win_Sock / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]