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:

problem mit winsock

 
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
player424



Anmeldungsdatum: 30.12.2008
Beiträge: 21

BeitragVerfasst am: 07.01.2009, 21:07    Titel: problem mit winsock Antworten mit Zitat

servus an alle

ich hab ein problem mit winsock
ich wollte erstmal einen kleinen client probieren. hab schon erfahrung mit winsock unter c++. Nun habe ich ein problem: ich kann mich zwar mit nem server verbinden und auch daten senden, aber ich empfange nichts, weder eine error page noch sonst was. Hier mal der ausschnitt aus dem code

Code:

dim as integer rc=send(s, msg, len(msg), 0)
if rc=SOCKET_ERROR then print "Fehler beim senden"

dim buf as zstring*recvblen+1
dim r as integer

r=recv(s, buf, recvblen, 0)


das ist wohl der teil in dem der fehler liegt. hoffe mir kann jemand helfen

edit: der zeigt an x zeichen gesendet (je nachdem wie viel ich angebe) und 0 zeichen empfangen
ha die version 0.20.0 beta. gibt es da irgendwelche bugs bezüglich winsock?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2009, 22:00    Titel: Antworten mit Zitat

winsock ist in fb genau das selbe wie in c++, von daher gibt es da sicher keine "bugs". probier doch mal die beispiele in examples\Windows\winsock aus.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
player424



Anmeldungsdatum: 30.12.2008
Beiträge: 21

BeitragVerfasst am: 07.01.2009, 22:05    Titel: Antworten mit Zitat

gut das das dann geklärt ist zwinkern . also an dem beispiel in dem gennanten verzeichnis hab ich mich orientiert ab er es will nicht klappen. ich hab die funktion resolveHost aus dem beispiel übernommen um eine fehlerquelle auszuschliessen. der gibt mir weder beim socket erstellen noch beim connect oder senden der daten einen fehler. auch bei recv nicht, aber der zeigt bei recv bei empfangenen bytes 0 an. weinen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 07.01.2009, 23:58    Titel: Antworten mit Zitat

Hi,
das Beispiel httpget.bas habe ich mal kompiliert (einfach in Konsole).
Damit man was sieht
Code:
...
   '' quit winsock
   WSACleanup
Sleep '<- eingefügt

...

Probier das doch mal genauso!
Wenn das funktioniert musst du deinen Quellcode mal genauer damit vergleichen.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
player424



Anmeldungsdatum: 30.12.2008
Beiträge: 21

BeitragVerfasst am: 08.01.2009, 00:04    Titel: Antworten mit Zitat

sleep hatte ich auch vorher schon drin, mein problem ist ja, dass der server nichts sendet. glaub aber mittlerweile es liegt am connect

Code:
declare function resolveHost(byref hostname as string) as integer
const recvblen=8100
dim wsa as WSAData
if WSAStartup(MAKEWORD(1,1), @wsa)<>0 then print "Starten von Winsock gescheitert"
dim s as SOCKET
s=opensocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
if s=INVALID_SOCKET then print "Fehler beim erstellen des Sockets"

dim ad as sockaddr_in

ad.sin_family=AF_INET
ad.sin_port=htons(80)
ad.sin_addr.s_addr=inet_addr("213.202.225.70")


if connect(s, cast(PSOCKADDR, @ad), len(ad))=SOCKET_ERROR then print "Verbindung gescheitert"

ist da was falsch dran?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.01.2009, 00:57    Titel: Antworten mit Zitat

??
Ich bin kein Winsock - eksbär.de grinsen
so
Code:
#Include Once "win/winsock.bi"

Const RECVBUFFLEN = 8192
Const NEWLINE = !"\r\n"
Dim hostname As String
Dim path As String
hostname ="213.202.225.70"

'' init winsock
Dim wsaData As WSAData
If( WSAStartup( MAKEWORD( 1, 1 ), @wsaData ) <> 0 ) Then
  Print "Error: WSAStartup failed"
  End 1
End If
'' open socket
Dim s As socket
s = opensocket( AF_INET, SOCK_STREAM, IPPROTO_TCP )
If( s = 0 ) Then
  Print "Error:"; WSAGetLastError; " Calling: socket()"
  End 1
End If

'' connect to host
Dim sa As sockaddr_in
sa.sin_port         = htons( 80 )
sa.sin_family      = AF_INET
sa.sin_addr.S_addr   = inet_addr(hostname)
If ( Connect( s, Cast( PSOCKADDR, @sa ), Len( sa )) = SOCKET_ERROR ) Then
  Print "Error:"; WSAGetLastError; " Calling: connect()"
  closesocket( s )
  End 1
End If

'' send HTTP request
Dim sendbuffer As String
sendBuffer = "GET /" + path + " HTTP/1.0" + NEWLINE + _
"Host: " + hostname + NEWLINE + _
"Connection: close" + NEWLINE + _
"User-Agent: GetHTTP 0.0" + NEWLINE + NEWLINE

If( send( s, sendBuffer, Len( sendBuffer ), 0 ) = SOCKET_ERROR ) Then
  Print "Error:"; WSAGetLastError; " Calling: send()"
  closesocket( s )
  End 1
End If

'' receive until connection is closed
Dim recvbuffer As ZString * RECVBUFFLEN+1
Dim bytes As Integer
Do
  bytes = recv( s, recvBuffer, RECVBUFFLEN, 0 )
  If( bytes <= 0 ) Then
    Exit Do
  End If
  recvbuffer[bytes] = 0' add the null-terminator
  Print recvbuffer' print buffer as a string
Loop
Print

'' close socket
shutdown( s, 2 )
closesocket( s )
'' quit winsock
WSACleanup
Sleep
klappts!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
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