trinkРекламные агенты, такие ка Вы, всегда прибегают к тому, к чему прибегли Вы.
Я ведь сказал Вам, что вопросом Вы не владеете, тем не менее Вы решились ещё раз продемонстрировать всем на этом форме, свою ПОЛНУЮ неосведомлённость.
Заранее предполагая, что такой хитроумный рекламщик комерческих продуктов, вроде Вас, будет обязательно придираться к вышеприведённому примеру Вашей полной неосведомлённости в данном вопросе, я просто приведу пример, который идёт в составе СТАНДАРТНОЙ поставки FreeBasic и не пользуются модулями написанными сторонними программистами:
- Код: Выделить всё
''
'' simple http-get example for both Windows and Linux
''
#ifdef __FB_WIN32__
#include once "win/winsock2.bi"
#else
#include once "crt/netdb.bi"
#include once "crt/sys/socket.bi"
#include once "crt/netinet/in.bi"
#include once "crt/arpa/inet.bi"
#include once "crt/unistd.bi"
#endif
const RECVBUFFLEN = 8192
const NEWLINE = !"rn"
const DEFAULT_HOST = "www.freebasic.net"
declare sub doInit( )
declare sub doShutdown( )
declare sub getHostAndPath _
( _
byref src as string, _
byref hostname as string, _
byref path as string _
)
declare function resolveHost( byref hostname as string ) as integer
declare sub reportError( byref msg as string )
dim hostname as string
dim path as string
doInit( )
'' check command-line
getHostAndPath( command( ), hostname, path )
if( len( hostname ) = 0 ) then
hostname = DEFAULT_HOST
end if
'' resolve name
dim ip as integer
dim s as SOCKET
ip = resolveHost( hostname )
if( ip = 0 ) then
print "resolveHost(): invalid address"
end 1
end if
'' open socket
s = opensocket( AF_INET, SOCK_STREAM, IPPROTO_TCP )
if( s = 0 ) then
reportError( "socket()" )
end 1
end if
'' connect to host
dim sa as sockaddr_in
sa.sin_port = htons( 80 )
sa.sin_family = AF_INET
sa.sin_addr.S_addr = ip
if( connect( s, cast( PSOCKADDR, @sa ), sizeof( sa ) ) = SOCKET_ERROR ) then
reportError( "connect()" )
closesocket( s )
end 1
end if
'' send HTTP request
dim sendbuffer as string
sendBuffer = "GET /" + path + " HTTP/1.0" + NEWLINE + _
"Host: " + hostname + NEWLINE + _
"Connection: close" + NEWLINE + _
"User-Agent: GetHTTP 0.0" + NEWLINE + _
NEWLINE
if( send( s, sendBuffer, len( sendBuffer ), 0 ) = SOCKET_ERROR ) then
reportError( "send()" )
closesocket( s )
end 1
end if
'' receive until connection is closed
dim recvbuffer as zstring * RECVBUFFLEN+1
dim bytes as integer
do
bytes = recv( s, recvBuffer, RECVBUFFLEN, 0 )
if( bytes <= 0 ) then
exit do
end if
'' add the null-terminator
recvbuffer[bytes] = 0
'' print buffer as a string
print recvbuffer
loop
print
'' close socket
shutdown( s, 2 )
closesocket( s )
doShutdown( )
sub getHostAndPath _
( _
byref src as string, _
byref hostname as string, _
byref path as string _
)
dim p as integer = instr( src, " " )
if( p = 0 or p = len( src ) ) then
hostname = trim( src )
path = ""
else
hostname = trim( left( src, p-1 ) )
path = trim( mid( src, p+1 ) )
end if
end sub
function resolveHost( byref hostname as string ) as integer
dim ia as in_addr
dim hostentry as hostent ptr
'' check if it's an ip address
ia.S_addr = inet_addr( hostname )
if ( ia.S_addr = INADDR_NONE ) then
'' if not, assume it's a name, resolve it
hostentry = gethostbyname( hostname )
if ( hostentry = 0 ) then
exit function
end if
function = *cast( integer ptr, *hostentry->h_addr_list )
else
'' just return the address
function = ia.S_addr
end if
end function
sub reportError( byref msg as string )
#ifdef __FB_WIN32__
print msg; ": error #" & WSAGetLastError( )
#else
perror( msg )
#endif
end sub
sub doInit( )
#ifdef __FB_WIN32__
'' init winsock
dim wsaData as WSAData
if( WSAStartup( MAKEWORD( 1, 1 ), @wsaData ) <> 0 ) then
print "Error: WSAStartup failed"
end 1
end if
#endif
end sub
sub doShutdown( )
#ifdef __FB_WIN32__
'' quit winsock
WSACleanup( )
#endif
end sub
Далее, если уж говорить о кроссплатформенности, где самому разработчику не надо использовать конструкции типа IFDEF, то в FreeBasic существует модуль для использования библиотеки CURL.
Вам нужны ещё доказательства Вашей полной неосведомлённости и несостоятельности или Вы, наконец, перестанете нести здесь всякую чушь, выпячивая, причём совершенно необоснованно, продукт Ваших коммерческих нанимателей?
Добавлено спустя 8 минут 12 секунд:trinkИтак, сударь, совешенно чётко и однозначно доказано, что Вы врёте. Мало того, что врёте, так ещё и меня обвинили в этом, причём бездоказательно.
Я требую извинений с Вашей стороны.