Progger_X Mr. Lagg
 
  Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
  | 
		
			
				 Verfasst am: 21.06.2005, 18: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? | 
			 
		  |