The freeaddrinfo function was added to the Ws2_32.dll on Windows XP and later.
To execute an application using this function on earlier versions of Windows (Windows 2000, Windows NT, and Windows Me/98/95), then you must include the Ws2tcpip.h file and also include the Wspiapi.h file. When the Wspiapi.h include file is added, the freeaddrinfo function is defined to the WspiapiFreeAddrInfo inline function in the Wspiapi.h file.
At runtime, the WspiapiFreeAddrInfo function is implemented in such a way that if the Ws2_32.dll or the Wship6.dll (the file containing freeaddrinfo in the IPv6 Technology Preview for Windows 2000) does not include freeaddrinfo, then a version of freeaddrinfo is implemented inline based on code in the Wspiapi.h header file.
This inline code will be used on older Windows platforms that do not natively support the freeaddrinfo function.
Web-сервис на C++ Builder 6
Где-то, когда-то, не помню когда и где, я слышал, что web-сервис можно написать на C++. Вот возникла необходимость написать web-сервис, а я в этом деле нуб. В справке нашел только как запустить сервис и хз зачем написать для него сервер (если не ошибаюсь сервис выполняется на web-сервере, если ошибаюсь поправьте). В нете тоже че-то не нашел статей по этой теме.
Короче дайте ссылку или если не лень напишите как написать web-сервис на С++ Builder (если это вообще возможно)
Спасибо!
Вопрос №2. Как вызвать в Buildere веб сервис. Че-то ничерта не понял что в справке написано.
Где-то, когда-то, не помню когда и где, я слышал, что web-сервис можно написать на C++. Вот возникла необходимость написать web-сервис, а я в этом деле нуб. В справке нашел только как запустить сервис и хз зачем написать для него сервер (если не ошибаюсь сервис выполняется на web-сервере, если ошибаюсь поправьте). В нете тоже че-то не нашел статей по этой теме.
Короче дайте ссылку или если не лень напишите как написать web-сервис на С++ Builder (если это вообще возможно)
Спасибо![/QUOTE]
Давай все же с начала определимся - что есть твоя задача? Что ты хочешь получить на выходе?
Задача : сделать так, чтобы файлы (которые я сейчас передаю сервером на клиент вручную отправляя через WinSock) передавались с помощью вэб сервиса, т.е. на сколько я себе представляю (а представляю я себе это очень смутно) надо с клиента вызвать функцию на веб сервере которая вернет буфер байтов.
Идея не моя, просто мне сказали, что надо так тоже попробовать т.к. большую часть моего кода (всякое распаралеливание и слежение за тем чтобы много народу сразу не качало) на себя возьмет веб сервер (а его все таки делали люди которые в сетевом програмировании имеют побольше опыта чем я). Короче мне сказали что так будет эффективнее и надежнее.
Поетому мне кажется есть две задачи :
1. написать этот сервис ( на С++ просто хотелось попробовать, а вообще я уже написал на .Net)
2. и вызвать его из моей проги написанной на Билдере, просто по справке нифига не догнал как это сделать
Идея не моя, просто мне сказали, что надо так тоже попробовать т.к. большую часть моего кода (всякое распаралеливание и слежение за тем чтобы много народу сразу не качало) на себя возьмет веб сервер (а его все таки делали люди которые в сетевом програмировании имеют побольше опыта чем я). Короче мне сказали что так будет эффективнее и надежнее.
Поетому мне кажется есть две задачи :
1. написать этот сервис ( на С++ просто хотелось попробовать, а вообще я уже написал на .Net)
2. и вызвать его из моей проги написанной на Билдере, просто по справке нифига не догнал как это сделать[/QUOTE]
Мм... В борланде есть ряд компонентов позволяющих реализовать сервис - я честно говоря не использовал их, но если судить по опыту и спользования RDM-модуля (я об этом создавал тему лет так ...полгода назад - я там описывал помоему ряд проблем при разработке сервера ) то далеко не все так просто возможно. Если тема для тебя актуальна - могу выложить материалы из руководства разработчика - но правда их там ок сотни страниц - сканировать некогда, набирать тем более...;)
Идея не моя, просто мне сказали, что надо так тоже попробовать т.к. большую часть моего кода (всякое распаралеливание и слежение за тем чтобы много народу сразу не качало) на себя возьмет веб сервер (а его все таки делали люди которые в сетевом програмировании имеют побольше опыта чем я). Короче мне сказали что так будет эффективнее и надежнее.
Поетому мне кажется есть две задачи :
1. написать этот сервис ( на С++ просто хотелось попробовать, а вообще я уже написал на .Net)
2. и вызвать его из моей проги написанной на Билдере, просто по справке нифига не догнал как это сделать[/QUOTE]
File|New|Web Server Application?
Цитата:
...сканировать некогда, набирать тем более...
раз некогда то не надо
Цитата:
File|New|Web Server Application
че-то я не нашел такого, это в каком Билдере? у меня 6
че-то я не нашел такого, это в каком Билдере? у меня 6[/QUOTE]
и в 6 тоже
Но у меня опять возникла необходимость вызвать в С++ веб-сервис написанный на .Net.
Ничерта не понимаю что в справеке написано.
Кто-нибудь вызывал веб-сервисы из С++, объясните пожалуйста как это делать.
Спасибо!
че-то я не нашел такого, это в каком Билдере? у меня 6[/QUOTE]
File | New | Other ...
вкладка New там элемент Web Server Application
и если мне не изменяет мой склероз, то это CGI будет... ну или что-то вроде... (в общем выбирать можно)
А автору вопрос следует задат в раздел веб-программирование - там ему объяснят подробней как веб сервис описать. А уж саму программу которая будет выполнятся можно на чем угодно и на С++ в том числе.
я подсказал где то чего не нашли, а сам не разу не пользовал, и что это будет в итоге мне ровно.
Но теперь мне надо вызвать его из приложения написанного на C++Builder 6, так что с местом расположения своего вопроса я кажется не ошибся.
За ранее благодарен за ответы!
Что значит вызывать веб сервис из приложения?
Люди, ну че никто не шарит в этой теме? Может кто знает как вызвать сервис из Visual C++?
Люди, ну че никто не шарит в этой теме? Может кто знает как вызвать сервис из Visual C++?[/QUOTE]
Используй поиск по форуму и читай справку. Тема жевалась и пережевывалась неоднократно. Размещать сообщения типа "Ну что никто не знает..." и пр. - не нужно.
Единственное что смог найти это как это сделать в Visual C++ на MSDN, но когда пытаюсь откомпилить выдает
---------------------------
CallWebService2.exe - Точка входа не найдена
---------------------------
Точка входа в процедуру freeaddrinfo не найдена в библиотеке DLL WS2_32.dll.
---------------------------
OK
---------------------------
А если убрать вызов веб метода, то все нормально. Причем я еще не вызываю функцию в которой веб метод вызывается.
А веток на эту тему я не нашел, где бы "Тема жевалась и пережевывалась неоднократно."
Нашел описание такой проблемы на MSDN, посмотрел что они предлагают. Нашел тот файл который надо изменить, а он уже исправленный, а проблема есть. Что делать?
---------------------------
CallWebService2.exe - Точка входа не найдена
---------------------------
Точка входа в процедуру freeaddrinfo не найдена в библиотеке DLL WS2_32.dll.
---------------------------
OK
---------------------------
А если убрать вызов веб метода, то все нормально. Причем я еще не вызываю функцию в которой веб метод вызывается.
А веток на эту тему я не нашел, где бы "Тема жевалась и пережевывалась неоднократно."[/QUOTE]
Код:
Но для меня написать вызов веб-сервиса на Visual C++ это как крайний вариант. Т.к. программа которая должна вызывать веб-метод уже написана на С++ Билдере.
Ну вобщем у меня получилось заставить Билдер сгенерировать какой-то класс который походу должен вызывать мой сервис. Но вот опять такая стремная проблема возникла. Веб-методы без параметров вызываются и возвращают значения как надо, но веб-методы с параметрами вызывают ошибку, т.к. почему-то в эти методы не приходят входные параметры.
т.е. вызываю Hello("_kot") и должет вернуть "Hello, _kot!", возвращает "Hello, !"
вызывал так
Код:
_di_ServiceSoap sfd = GetServiceSoap(false,"");
ShowMessage(sfd->Hello("lol"));
ShowMessage(sfd->Hello("lol"));
2_kot удели пожалуйста мне еще немного своего драгоценного времени и ответь как бороться с этой напастью, буду тебе бескрайне благодарен ))) как и любому другому ответившему на мой вопрос
Спасибо!
Вот еще прикрепил класс который мне Билдер сделал, но врядли в нем ошибка
Но для меня написать вызов веб-сервиса на Visual C++ это как крайний вариант. Т.к. программа которая должна вызывать веб-метод уже написана на С++ Билдере.
Ну вобщем у меня получилось заставить Билдер сгенерировать какой-то класс который походу должен вызывать мой сервис. Но вот опять такая стремная проблема возникла. Веб-методы без параметров вызываются и возвращают значения как надо, но веб-методы с параметрами вызывают ошибку, т.к. почему-то в эти методы не приходят входные параметры.
т.е. вызываю Hello("_kot") и должет вернуть "Hello, _kot!", возвращает "Hello, !"
вызывал так
Код:
_di_ServiceSoap sfd = GetServiceSoap(false,"");
ShowMessage(sfd->Hello("lol"));
ShowMessage(sfd->Hello("lol"));
2_kot удели пожалуйста мне еще немного своего драгоценного времени и ответь как бороться с этой напастью, буду тебе бескрайне благодарен ))) как и любому другому ответившему на мой вопрос
Спасибо!
Вот еще прикрепил класс который мне Билдер сделал, но врядли в нем ошибка[/QUOTE]
Со временем тяжело.
например в моем сервисе методы были определены так:
Код:
STDMETHOD(AS_Login(BSTR login,long pointid,BSTR pass));
STDMETHOD(LoginOutE(long SID));
STDMETHOD(GetMessageEm(long id));
STDMETHOD(get_Query_Select(IAppServer** Value));
STDMETHOD(set_Query_Select(IAppServer* Value));
STDMETHOD(LoginOutE(long SID));
STDMETHOD(GetMessageEm(long id));
STDMETHOD(get_Query_Select(IAppServer** Value));
STDMETHOD(set_Query_Select(IAppServer* Value));
Реализован например
Код:
STDMETHODIMP TnOTCRemouteModuleImpl::AS_Login(BSTR login,long pointid,BSTR pass)
{
fmMain->Login(this,login,pointid,pass);
return S_OK;
}
{
fmMain->Login(this,login,pointid,pass);
return S_OK;
}
Вроде проблем не было.
Я вставил эти хедеры в начало класса для вызова сервиса который мне Visual Studio сгенерировала. Может не туда надо вставлять?