Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно написать кросс-платформенный простенький веб, веб-сервер, дял компиляции на gcc 
:(
    Опции темы
szz
Дата 16.5.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Мне нужно создать простой http cервер, чтоб слушал на моем порту и выдавал что-нибудь на запросы из браузера, например выдавал бы "Привет" если пишут http://localhost:1234

   Я такое уже написал на С++ Builderе (использовал TSocket), но мне теперь надо чтоб переносимо было. Собираюсь писать на gcc. Есть ли там какие-нибудь библиотеки для работы с сокетами? 
------------------
вот, нашел тут: http://www.alhem.net/Sockets/index.html
скачал, поставил, пишу, значит, свой класс для http-сервера:
Код
#include <stdio.h>
#include <HttpdSocket.h>
#include <SocketHandler.h>

class xkHTTP : public HttpdSocket
{
public:
    xkHTTP(SocketHandler &h):HttpdSocket(h){
    }    
    void Exec(){
    }
};


main(int argc, char **argv){
    SocketHandler h;
    xkHTTP *xkh = new xkHTTP(h);
    printf("Object created!");
}


а мне g++ выдает огромную кучу непонятных ошибок:
Код

d:\projects\else\_sockets\xkhttpd>g++ xkhttpd.cpp
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text+0x8a):xkhttpd.cpp: undefined refe
rence to `SocketHandler::SocketHandler(StdLog*)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text+0x159):xkhttpd.cpp: undefined ref
erence to `SocketHandler::~SocketHandler()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text+0x195):xkhttpd.cpp: undefined ref
erence to `SocketHandler::~SocketHandler()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text$_ZN6xkHTTPC1ER13SocketHandler[xkH
TTP::xkHTTP(SocketHandler&)]+0x14):xkhttpd.cpp: undefined reference to `HttpdSoc
ket::HttpdSocket(SocketHandler&)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x10):xkhttpd.cpp: undefined reference to `Socket::Create()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x14):xkhttpd.cpp: undefined reference to `Socket::Init()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x18):xkhttpd.cpp: undefined reference to `TcpSocket::Close()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x1c):xkhttpd.cpp: undefined reference to `HTTPSocket::OnRead()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x20):xkhttpd.cpp: undefined reference to `TcpSocket::OnWrite()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x24):xkhttpd.cpp: undefined reference to `Socket::OnException()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x28):xkhttpd.cpp: undefined reference to `Socket::OnDelete()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x2c):xkhttpd.cpp: undefined reference to `Socket::OnConnect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x30):xkhttpd.cpp: undefined reference to `Socket::OnAccept()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x34):xkhttpd.cpp: undefined reference to `HTTPSocket::OnLine(std::string const&)
'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x38):xkhttpd.cpp: undefined reference to `Socket::OnConnectFailed()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x3c):xkhttpd.cpp: undefined reference to `Socket::OnOptions(int, int, int, unsig
ned int)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x40):xkhttpd.cpp: undefined reference to `TcpSocket::OnSocks4Connect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x44):xkhttpd.cpp: undefined reference to `TcpSocket::OnSocks4ConnectFailed()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x48):xkhttpd.cpp: undefined reference to `TcpSocket::OnSocks4Read()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x4c):xkhttpd.cpp: undefined reference to `TcpSocket::OnSSLConnect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x50):xkhttpd.cpp: undefined reference to `TcpSocket::OnSSLAccept()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x54):xkhttpd.cpp: undefined reference to `Socket::OnConnectRetry()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x58):xkhttpd.cpp: undefined reference to `Socket::OnReconnect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x5c):xkhttpd.cpp: undefined reference to `Socket::OnSSLConnectFailed()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x60):xkhttpd.cpp: undefined reference to `Socket::OnSSLAcceptFailed()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x64):xkhttpd.cpp: undefined reference to `Socket::OnDisconnect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x68):xkhttpd.cpp: undefined reference to `Socket::CheckConnect()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x6c):xkhttpd.cpp: undefined reference to `HTTPSocket::ReadLine()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x70):xkhttpd.cpp: undefined reference to `TcpSocket::SSLNegotiate()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x74):xkhttpd.cpp: undefined reference to `Socket::OnDetached()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x78):xkhttpd.cpp: undefined reference to `Socket::GetPort()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x7c):xkhttpd.cpp: undefined reference to `TcpSocket::OnResolved(int, unsigned lo
ng, unsigned short)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x80):xkhttpd.cpp: undefined reference to `TcpSocket::SendBuf(char const*, unsign
ed int, int)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x84):xkhttpd.cpp: undefined reference to `TcpSocket::Send(std::string const&, in
t)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x88):xkhttpd.cpp: undefined reference to `TcpSocket::OnRawData(char const*, unsi
gned int)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x8c):xkhttpd.cpp: undefined reference to `TcpSocket::InitSSLClient()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x90):xkhttpd.cpp: undefined reference to `TcpSocket::InitSSLServer()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x94):xkhttpd.cpp: undefined reference to `TcpSocket::GetSslContext()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x98):xkhttpd.cpp: undefined reference to `TcpSocket::GetSsl()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
x9c):xkhttpd.cpp: undefined reference to `HttpdSocket::OnFirst()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
xa0):xkhttpd.cpp: undefined reference to `HttpdSocket::OnHeader(std::string cons
t&, std::string const&)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
xa4):xkhttpd.cpp: undefined reference to `HttpdSocket::OnHeaderComplete()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
xa8):xkhttpd.cpp: undefined reference to `HttpdSocket::OnData(char const*, unsig
ned int)'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
xac):xkhttpd.cpp: undefined reference to `HTTPSocket::MyUseragent()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.rdata$_ZTV6xkHTTP[vtable for xkHTTP]+0
xb0):xkhttpd.cpp: undefined reference to `HttpdSocket::Reset()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text$_ZN6xkHTTPD1Ev[xkHTTP::~xkHTTP()]
+0x16):xkhttpd.cpp: undefined reference to `HttpdSocket::~HttpdSocket()'
C:\DOCUME~1\szz\LOCALS~1\Temp/ccaGaaaa.o(.text$_ZN6xkHTTPD0Ev[xkHTTP::~xkHTTP()]
+0x16):xkhttpd.cpp: undefined reference to `HttpdSocket::~HttpdSocket()'
collect2: ld returned 1 exit status

d:\projects\else\_sockets\xkhttpd>

  что это за ошибки и как с ними разобраться? 

Это сообщение отредактировал(а) szz - 16.5.2006, 23:11


--------------------
PM   Вверх
jonie
Дата 19.5.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



думаю выдает ошибки линкер а не ассемблер (объекстный файл создан но не линкуется).
я конечно не спец по gcc но очень смахивает на то что не подключил собсна библиотеку ( -l<libname> -L<libpath> ) 


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ZeusAtVingrad
Дата 19.5.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.4.2006

Репутация: нет
Всего: нет



Переносимо это:
1. Использовать только стандартную библиотеку и синтаксис C++.
2. Использовать переносимые решения, вне С++, а сокеты в виндах портированы из Unix.

Получается, что ПРОСТЕЙШИЙ (ф-я main, сокеты, файловые потоки) переносимый http-сервер можно написать на С++ с использованием сокетов - хоть виндовых, хоть unix'овых. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.