Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 21.06.2005, 19:25 Titel: Fehler in Clientdatei |
|
|
Hallo. Ich habe ein paar Tuts durchgearbeitet soweit es ging und mir den FB Beispielcode für Sockets genommen, und n bisl programmiert. Herausgekommen ist folgendes:
Code: | '$include: "win/winsock.bi"
'Läd Winsock als Library
declare sub Winsockstarten
dim s as socket 'Der Socket an sich
dim sa as sockaddr_in 'versteh ich nicht
dim sendbuffer as string 'was gesendet werden soll
dim bytes as integer 'Speicher für empfangene daten(die schon bereit sind)
dim recvbuffer as zstring *100 'Was zum empfangen,RECVBUFFLEN+1?
'Speicher für einfach so empfangene daten
input "Addresse: ",addresse$
Winsockstarten
s = opensocket( AF_INET, SOCK_STREAM, IPPROTO_TCP )
if s=INVALID_SOCKET then Print "Fehler"
'AF_INET: Adressenfamilie bei TCP/UP
'SOCKET_STREAM: Socket bei TCP
'IPPROTO_TCP: TCP Protokoll
sa.sin_port = htons( 80 )
sa.sin_family = AF_INET
sa.sin_addr.S_addr = ip
'das verteh ich gar nicht
connect( s, @sa, len( sa ))
'Verbindet zu einem Server
's=der Socket
'@sa und len(sa) versteh ich net
hostname$="127.0.0.1"
sendbuffer="GET /" + addresse$ + " HTTP/1.0" + NEWLINE + _
"Host: " + hostname$ + NEWLINE + _
"Connection: close" + NEWLINE + _
"User-Agent: GetHTTP 0.0" +NEWLINE +_
NEWLINE
'Legt die Sendeanfrage fest
send( s, strptr( sendBuffer ), len( sendBuffer ), 0 )
'Jetzt wird die Anfrage zur Website gesendet
do
bytes = recv( s, strptr( recvBuffer ), RECVBUFFLEN, 0 )
'Daten werden empfangen und in bytes gespeichert
' add the null-terminator
recvbuffer[bytes] = 0
'Keine Ahnung?
' print buffer as a string
print recvbuffer
loop until bytes <= 0
Print "Hallo"
Sleep
Sub Winsockstarten
dim wsaData as WSAData'Initialisiert Winsock
WSAStartup( MAKEWORD( 1, 1 ), @wsaData)'Startet Winsock und macht ein Wort
end sub |
Könnt ihr mir bitte sagen,
a)wieso bei
Code: | dim recvbuffer as zstring *100< |
Das nicht wie beim Beispielcode mit
Code: | dim recvbuffer as zstring *RECVBUFFLEN+1 |
geht?
b)wieso
Code: | sendbuffer="GET /" + addresse$ + " HTTP/1.0" + NEWLINE + _
"Host: " + hostname$ + NEWLINE + _
"Connection: close" + NEWLINE + _
"User-Agent: GetHTTP 0.0" +NEWLINE +_
NEWLINE
| nicht funktioniert?
c)Was da Code: | dim sa as sockaddr_in | und
Code: | sa.sin_port = htons( 80 )
sa.sin_family = AF_INET
sa.sin_addr.S_addr = ip | und die Befehle drumherum bringen? |
|