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 problem!

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



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 28.02.2006, 16:28    Titel: Winsock problem! Antworten mit Zitat

Hallo

Ich hab heute mal wieder ein bischen mit der Winsock.bi rum gespielt
und bin bei dem versuch ein kleinen Chat zu proggen auf ein problem
gestoßen. Beide programme (d.h. sever und client ) haben einen
Fehler und zwar hier:
Sever:
Code:

   IF ( bind( accept_socket , CPTR( PSOCKADDR, @addr ) , LEN( addr ) ) = SOCKET_ERROR ) THEN
      PRINT "Socket konnte nicht an Port 80 gebunden werden!": SLEEP: END
   ELSE
      PRINT "Socket an Port 80 gebunden!"
   END IF
   


Client:
Code:

   IF ( Connect( socket , CPTR( PSOCKADDR, @addr ) , LEN( addr ) ) = SOCKET_ERROR ) THEN
      PRINT "Verbindung zu 192.168.1.3 konnte nicht hergestellt werden!": SLEEP: END
   ELSE
      PRINT "Verbindung zu 192.168.1.3 hergestellt!"
   END IF
   


Es kommt immer der Fehler!
Kennt sich vieleicht jemand ein bischen damit aus und kann mir sagen
woran das ligen könnte. Wenn der Code nicht reicht poste ich meinet
wegen auch den rest.

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 28.02.2006, 18:13    Titel: Antworten mit Zitat

Denn Rest des Codes auch bitte und auch bitte eine Beschreibung des Fehlers. (Hier ist ein Fehler ist halt etwas zu wage)
Jenach grösse auf http://freebasic.de/fbnp hochladen, für's Forum ist das Programm sicherlich zu gross.
Wenn es für http://freebasic.de/fbnp zu lang ist, gibt es zur not http://rapidshare.de/.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 28.02.2006, 19:15    Titel: Antworten mit Zitat

Die länge des Codes hält sich noch in grenzen. Ich hab ihn trozdem
mal hochgeladen um das mal zu testen. lächeln
die beiden Codes heißen:
Winsock: >> Sever
b.z.w
Winsock: >> Client

Der Fehler ist das die Funktionen BIND und CONNECT beide
SOCKET_ERROR zurückgeben und ich nicht weiß warum.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 28.02.2006, 19:39    Titel: Antworten mit Zitat

Die Links bitte auch Posten:
http://freebasic.de/fbnp/?view=246
http://freebasic.de/fbnp/?view=245

Die Gute Nachricht:
Ich hab den gleichen Fehler beim Testen.

Wem gehört eigentlich die IP 192.168.1.3 ?
Ist die Korrekt?
(wahrschneilich nicht der Fehler, aber micht machst stuzig)
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 28.02.2006, 19:53    Titel: Antworten mit Zitat

Ich sag jetzt lieber nicht was ich denke ...

Orginal:
Code:
   IF ( socket = OpenSocket( AF_INET , SOCK_STREAM , IPPROTO_TCP ) = INVALID_SOCKET ) THEN
      PRINT "Socket konnte nicht erstellt werden!": SLEEP: END
   ELSE
      PRINT "Socket erstellt!"
   END IF


Scheint zu gehen:
Code:
   socket = OpenSocket( AF_INET , SOCK_STREAM , IPPROTO_TCP )
   
   IF ( socket = INVALID_SOCKET ) THEN
      PRINT "Socket konnte nicht erstellt werden!": SLEEP: END
   ELSE
      PRINT "Socket erstellt!"
   END IF


Dieser Ausdruck bewirkt etwas anderes als du meinst:
Code:
IF ( socket = OpenSocket( AF_INET , SOCK_STREAM , IPPROTO_TCP ) = INVALID_SOCKET ) THEN

Zerlege besser solche Begriffe in mehre kleine und dann geht's.

(Der Server hat nen ganz ähnlichen Bug und weitere dieses Musters warten)

Auch sowas macht mich stuzig:
Code:
      re = send( socket , use_string2 , LEN( use_string2 ) , 0 )
      re = recv( socket , use_string1 ,                256 , 0 )

Du weisst, das re überschrieben wird, obwohl du es nicht mal verwendet hast?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 28.02.2006, 20:14    Titel: Antworten mit Zitat

Danke erstaml für den Tipp jetzt geht es so weit(aber nur fast).
Ich habe folgendes geändert:
Code:

      re = recv( connected_socket , use_string1 , 256 , 0 )
      IF re = SOCKET_ERROR THEN
         PRINT "Fehler": SLEEP: END
      ELSE
         PRINT "Empfangen: "; use_string1
      END IF
      use_string2 = "RETURN: " + use_string1
      send( connected_socket , use_string2 , LEN( use_string2 ) , 0 )

Nun gibt nämlich RECV einen SOCKET_ERROR zurück. mit dem Kopf durch die Mauer wollen
Vieleicht kannst du mir ja auch da helfen...

Die IP ist übrigens die meines Rechners um das ganze zu testen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 28.02.2006, 20:16    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
Wem gehört eigentlich die IP 192.168.1.3 ?
Ist die Korrekt?
(wahrschneilich nicht der Fehler, aber micht machst stuzig)


Die gehört der ICANN und ist für die Verwendung in LANs vorgesehen. Im Internet ist sie nicht erreichbar, sie kann von jedem Hobbynetzwerker intern vergeben werden. Vermutlich ist der Zielcomputer im lokalen Netzwerk
a) nicht vorhanden - oder -
b) nicht auf dem HTTP-Port 80 zu erreichen.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 28.02.2006, 20:29    Titel: Antworten mit Zitat

@Sebastian:

Keiner der beiden fälle trifft zu...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 28.02.2006, 20:46    Titel: Antworten mit Zitat

Wie ich sehe benutzt du winsock2. Da ist irgendwas komisches, was ich auch nicht schaffe zu lösen. Includiere win/winsock.bi und mache am anfang "Makeword(1,1)" statt 2,0. Dann klappts(bei mir)

Michael
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 28.02.2006, 20:55    Titel: Antworten mit Zitat

hmmmm...

Bei mir geht es immer noch nicht mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 02.03.2006, 07:41    Titel: Antworten mit Zitat

Poste bitte den aktuellen Code, sonst wird die Fehlersuche unmöglich weil jeder eine etwas andere Variante des Codes hat.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 03.03.2006, 15:58    Titel: Antworten mit Zitat

So hab jetzt den neusten code hochgeladen.
Mein Fehler ist weiterhin das beim sever die Funktion RECV
einen SOCKET_ERROR zurück gibt.

http://www.freebasic.de/fbnp/index.php?view=251
http://www.freebasic.de/fbnp/index.php?view=252

Vieleicht findet ja jemand den Fehler.

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 03.03.2006, 17:45    Titel: Antworten mit Zitat

Bei mir schmiert erst der Server ab, mal sehn was sich tun lässt.

Hier ist das Wunder mittel:
Ersetze
Code:
   DIM use_string1      AS STRING
   DIM use_string2      AS STRING

mit
Code:
   DIM use_string1      AS zSTRING *256
   DIM use_string2      AS zSTRING *256


String ist ein Typischer Freebasic Datentyp, "Normale" Programme nutzen ZSTRING.

Edit: Bug Report:
Wenn man
Code:
HELLO WORLD
No

sendet, meldet der Server
Code:
HELLO WORLD
No    WORLD

Zurück.
(Der sollte aber leicht zubeheben sein, das über lasse ich dir zwinkern)
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.03.2006, 00:19    Titel: Antworten mit Zitat

send( socket , use_string2 , LEN( use_string2 ) , 0 )
=>
send(socket, strptr(use_string2), len(use_string2), 0)

du brauchst einfach immer den zstring-ptr des strings an den du eben per strptr(stringvar) kommst.

Progger_X, du solltest vielleicht auch mal was über pointer lesen..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 04.03.2006, 08:44    Titel: Antworten mit Zitat

Was hast du mit Progger_X?
Dieser Thread ist von Thorben und wie meine Lösung zeigt, geht's auch ohne Pointer.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.03.2006, 13:40    Titel: Antworten mit Zitat

oh stimmt verlegen bei misslungenen versuchen, was mit netzwerk zu machen fällt mir eben immer progger_x ein.. gewohnheitssache zwinkern
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 04.03.2006, 19:35    Titel: Antworten mit Zitat

Cool jetzt gehts.
Danke das ihr euch die Mühe gemacht hab. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 -> Bibliotheken 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