Мне нужно создать простой 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>
|
что это за ошибки и как с ними разобраться? |