Vraag & Antwoord

Programmeren

[vb] winsock wil niet meewerken

Anoniem
None
11 antwoorden
  • Hallo,
    ik wou wel eens kijken hoe winsock werkt en heb daarom het volgende progje gemaakt:
    [code:1:c52f86dda4]
    Private Sub Form_Load()
    Winsock.RemotePort = tPort.Text
    Caption = "WinSock Tutorial - TCP Client @ " & Winsock.LocalHostName
    End Sub
    Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Winsock.GetData strData
    tDisplay.Text = strData
    MsgBox strData
    End Sub
    Private Sub bConnect_Click()
    Winsock.RemoteHost = tIP.Text
    Winsock.Connect
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    Winsock.Close
    End Sub
    [/code:1:c52f86dda4]
    De elementen spreken voor zich denk ik…
    winsock is een Winsock….
    tIP is een textfield voor de host
    tPort is een textfield voor de poort (duh)
    bConnect…tja

    Wanneer ik connect zegt netstat in dos dat de verbinding er wel is maar ik krijg geen respons van de server (winsock_dataArrival)
    Hoe kan dit?

    Haike
  • Dat hangt er van af wat de server doet, met alleen deze client kan ik er niet veel over zeggen…
  • Je mist idd de server.

    Ook heeft client geen send gedeelte.

    In de help van vb staat een simpel voorbeeld dat precies zo werkt als jij hier aan het maken bent.
  • en als de server een webserver is?
  • Dan is het nog logischer, want de webserver verwacht dat jij bij het Connect event een HTTP request stuurt, hoe moet ie anders weten welke pagina je opvraagt :razz:


    [edit]
    Nog een tip, jij doet 'tDisplay.Text = strData', maar de data kan ook in stukken aankomen, dus gebruik 'tDisplay.Text = tDisplay.Text & strData'.

    TCP/IP: de pakketten komen gegarandeerd aan (hardware failure uitgezonderd) en in de juiste volgorde, maar je kan nooit vantevoren weten hoe ze worden opgesplits. Zelfs een simpel commando als 'TEST' kan nog worden opgesplits theoretisch. Onthou dat, scheelt je een hoop problemen met sockets :wink:
    [/edit]

    _________________
    Te audire no possum. Musa sapientum fixa est in aure.

    [ Dit Bericht is bewerkt door: MarkVR op 2002-03-22 09:31 ]
  • Aha,

    en een HTTP-request, is dat een bepaalde string die je moet sturen. Pagina-naam of nog iets anders?

    Alvast bedankt,
    Haike
  • Hoi,

    Over HTTP kun je wat vinden in RFC2616, die je o.a. kunt vinden op ftp://ftp.isi.edu/in-notes/rfc2616.txt

    Omdat je dit progje toch alleen maar maakt om WinSock te proberen, denk ik dat je in dit geval eens verbinding kunt zoeken naar een andere service waar de server het eerste iets stuurt, bijvoorbeeld SMTP (op 25), POP3 (op 110) of FTP (op 21).

    Groet,
    Phedny
  • bedankt, het werkt nu.
    ik kan verbinding maken en de services antwoorden keurig.

    Nu probeer ik echter het programma op te starten in XP en nou zegt ie dat ie mswinsck.ocx niet kan vinden.
    winsock.dll staat wel op de computer. Wat moet ik hier aan doen?

    Haike
  • mswinsck.ocx meekopieren? De DLL is anders dan de OCX. De OCX is een wrapper rond de DLL speciaal gemaakt voor VB :smile:
  • mm, en kan dat niet anders dan?
    Het moet toch ook mogelijk zijn om winsock direct aan te roepen of niet?

    Gr, Haike
  • Jawel, het is best mogelijk, zoek alle API functies op en ga uitzoeken hoe ze werken, of ga op zoek naar prefabricated code die het iets makkelijker voor je maakt, maar geloof me, direct de Winsock API aanroepen in VB is niet makkelijk en je programma kan er vrij instabiel van raken…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.