  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		timscheu
 
 
  Anmeldungsdatum: 10.03.2007 Beiträge: 8
 
  | 
		
			
				 Verfasst am: 31.03.2007, 10:29    Titel: Winsock: Fehler im Intranet | 
				     | 
			 
			
				
  | 
			 
			
				Hi Leute,
 
 
ich habe mir zuhause einen Server eingerichtet und wollte darauf mit einem FreeBASIC und Winsock zugreifen (per HTTP). Wenn ich aufs Internet zugreifen will klappt alles super, wenn ich aber auf meinen lokalen Server zugreifen will kommt keine Antwort. Ich habe auch schon in den Logs win Apache nachgesehen: Kein Logeintrag! Woran kann das liegen?
 
 
Hier der Code:
 
 	  | Code: | 	 		  OPTION EXPLICIT
 
 
DECLARE FUNCTION resolveHost (hostname AS STRING) AS INTEGER
 
 
#include once "win/winsock.bi"
 
 
CONST RECVBUFFLEN = 8192
 
CONST NEWLINE = "\r\n"
 
CONST hostname = "TiServer"
 
 
DIM wsaData AS WSAData
 
DIM ip AS INTEGER
 
DIM s AS SOCKET
 
DIM sa AS sockaddr_in
 
DIM sendbuffer AS STRING
 
DIM recvbuffer AS ZSTRING * RECVBUFFLEN + 1
 
DIM bytes AS INTEGER
 
 
 
PRINT "--------------------------------------------------------------------------------";
 
PRINT "LoginLogger ";
 
COLOR 10
 
PRINT "v0.0b"
 
COLOR 7
 
PRINT "Socket wird erstellt............... ";
 
 
IF(WSAStartup(MAKEWORD(1, 1), @wsaData) <> 0) THEN
 
    COLOR 12
 
    PRINT "Fehler"
 
   PRINT "Socket konnte nicht erstellt werden!"
 
    COLOR 7
 
    PRINT "--------------------------------------------------------------------------------";
 
   END 1
 
END IF
 
 
COLOR 10
 
PRINT "OK"
 
COLOR 7
 
 
PRINT "Servername wird aufgel”st.......... ";
 
ip = resolveHost(hostname)
 
 
IF(ip = 0) THEN
 
    COLOR 12
 
    PRINT "Fehler"
 
   PRINT "Servername wurde nicht gefunden!"
 
    COLOR 7
 
    PRINT "--------------------------------------------------------------------------------";
 
   END 1
 
END IF
 
 
COLOR 10
 
PRINT "OK"
 
COLOR 7
 
 
PRINT "Socket wird ge”ffnet............... ";
 
 
s = opensocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
 
IF(s = 0) THEN
 
    COLOR 12
 
   PRINT "Fehler"
 
    PRINT "Socket konnte nicht ge”ffnet werden!"
 
    COLOR 7
 
    PRINT "--------------------------------------------------------------------------------";
 
   END 1
 
END IF
 
 
COLOR 10
 
PRINT "OK"
 
COLOR 7
 
 
PRINT "Verbindung wird aufgebaut.......... ";
 
 
sa.sin_port         = htons(80)
 
sa.sin_family      = AF_INET
 
sa.sin_addr.S_addr   = ip
 
IF (connect(s, cast(PSOCKADDR, @sa), LEN(sa)) = SOCKET_ERROR) THEN
 
    COLOR 12
 
   PRINT "Fehler"
 
    PRINT "Die Verbindung konnte nicht aufgebaut werden!"
 
    COLOR 7
 
   closesocket(s)
 
    PRINT "--------------------------------------------------------------------------------";
 
   END 1
 
END IF
 
 
COLOR 10
 
PRINT "OK"
 
COLOR 7
 
 
PRINT "Die Daten werden ?übertragen... ";
 
sendBuffer = "GET /login.php HTTP/1.0" + NEWLINE + _
 
"Host: " + hostname + NEWLINE + _
 
NEWLINE
 
IF(send(s, sendBuffer, LEN(sendBuffer), 0) = SOCKET_ERROR) Then
 
    COLOR 12
 
    PRINT "Fehler"
 
    PRINT "Die Daten konnten nicht ?übertragen werden!"
 
    COLOR 7
 
    closesocket(s)
 
    PRINT "--------------------------------------------------------------------------------";
 
    END 1
 
END IF
 
 
COLOR 10
 
PRINT "OK"
 
COLOR 7
 
 
PRINT "Warte auf R?ckmeldung..."
 
 
do 
 
     bytes = recv(s, recvBuffer, RECVBUFFLEN, 0)
 
      if(bytes <= 0) then
 
         exit do
 
      end if
 
      recvbuffer[bytes] = 0
 
      print recvbuffer
 
loop
 
 
shutdown(s, 2)
 
 
closesocket(s)
 
 
WSACleanup
 
 
PRINT "--------------------------------------------------------------------------------";
 
 
FUNCTION resolveHost(hostname AS STRING) AS INTEGER
 
   DIM ia AS in_addr
 
   DIM hostentry AS hostent PTR
 
   ia.S_addr = inet_addr(hostname)
 
   IF (ia.S_addr = INADDR_NONE) THEN
 
      hostentry = gethostbyname(hostname)
 
      IF (hostentry = 0) THEN
 
         EXIT FUNCTION
 
        END IF
 
      FUNCTION = *cast(INTEGER PTR, *hostentry->h_addr_list)
 
    ELSE
 
      FUNCTION = ia.S_addr
 
    END IF
 
END Function | 	 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		ytwinky
 
  
  Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
  | 
		
			
				 Verfasst am: 31.03.2007, 12:55    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Wenn ich einen Server ansprechen willm muß er eine IP-Adresse haben..
 
..darüber schweigst du dich aus.
 
Dein Server hat einen HostNamen('TIBasic'), gesetzt den Fall, TIBasic hätte eine IP-Adresse, wie erkennt der Rechner, daß TiBasic zu dieser IP-Adresse gehört?
 
-->Eintrag in der Hosts-Datei vorhanden/prüfen..
 
Der Anfang jeglicher Kommunikation sollte im Zweifelsfall immer der Ping-Befehl sein:
 
Motto: Wenn ich den anpingen kann, dann geht auch noch mehr  
 
Gruß
 
ytwinky _________________
  	  | v1ctor hat Folgendes geschrieben: | 	 		  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 	  ..also ungefähr so, wie ich GOTO.. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		csde_rats
 
  
  Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
  | 
		
			
				 Verfasst am: 31.03.2007, 13:56    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				jep. wenn der server aufm gleichen rechner läuft => 127.0.0.1 ansonsten => (wie ytwinky schon gesagt hat) anpingen mit
 
 
 	  | Code: | 	 		  
 
shell "ping [Server] > ping.txt"
 
 
open "ping.txt" fro input as #1
 
 
[...]
 
 | 	 
  _________________ If hilfreicher_Beitrag then klick(location.here)
 
 
 
Klick | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		ytwinky
 
  
  Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
  | 
		
			
				 Verfasst am: 31.03.2007, 14:25    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Naja, ich würde OpenPipe.Bas nehmen, da sind weniger Schreibfehler drin  
 
(Außerdem wird keine zusätzliche Datei angelegt, Open Pipe halt..)
 
Gruß
 
ytwinky _________________
  	  | v1ctor hat Folgendes geschrieben: | 	 		  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 	  ..also ungefähr so, wie ich GOTO.. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		timscheu
 
 
  Anmeldungsdatum: 10.03.2007 Beiträge: 8
 
  | 
		
			
				 Verfasst am: 31.05.2007, 10:32    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				| OK, hat sich erledigt. Ich habs neu geschrieben und es geht. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
     |