Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Winsock: Fehler im Intranet

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
timscheu



Anmeldungsdatum: 10.03.2007
Beiträge: 8

BeitragVerfasst am: 31.03.2007, 11:29    Titel: Winsock: Fehler im Intranet Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 31.03.2007, 13:55    Titel: Antworten mit Zitat

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 grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 31.03.2007, 14:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 31.03.2007, 15:25    Titel: Antworten mit Zitat

Naja, ich würde OpenPipe.Bas nehmen, da sind weniger Schreibfehler drin grinsen
(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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
timscheu



Anmeldungsdatum: 10.03.2007
Beiträge: 8

BeitragVerfasst am: 31.05.2007, 11:32    Titel: Antworten mit Zitat

OK, hat sich erledigt. Ich habs neu geschrieben und es geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz