Avatar billede sf Nybegynder
05. december 2005 - 18:17 Der er 56 kommentarer og
1 løsning

winsock modtag ok fra server

Jeg skal sende en del filer af sted med winsocket(TCP) når jeg har sendt det første af sted køre jeg dette loop for at vente på et OK svar fra serverne:

    Do
      DoEvents
    Loop Until filefin = True

men selv om jeg sender ok tilbage .. kommer min program aldrig ind i Winsock_DataArrival hvad kan dette skyldes?
Avatar billede sf Nybegynder
05. december 2005 - 18:44 #1
en anden ting er når jeg laver
Do
        DoEvents
    Loop Until complete = True

for den førs skal forsætte når den er færdig med at sende kommer den aldrig ud af loppet.
Avatar billede joern Nybegynder
05. december 2005 - 19:12 #2
Hej.

Jeg har ikke arbejdet med winsock men bruger kontrollen msinet.ocx

Dér skriver man således:

On Error GoTo ingenweb2
  Inet.Execute , "PUT " & netsti & medfil & " " & webfil
  Do While Inet.StillExecuting
      DoEvents
  Loop

Kan det måske inspirere?

/jørn
Avatar billede inglenook Praktikant
05. december 2005 - 19:26 #3
hvordan ser din Winsock_DataArrival ud...?
Avatar billede joern Nybegynder
05. december 2005 - 19:58 #4
Hej.

Jeg bruger ikke winsock, men msinet.

Inet.Protocol = icFTP
  Inet.URL = ftpserv
  Inet.UserName = ftpuser
  Inet.Password = ftppw
  Inet.RequestTimeout = 10
 
  Inet.Execute , "Get " & webfil & " " & netsti & medfil
  Do While Inet.StillExecuting
      DoEvents
  Loop
 
  Inet.Execute , "Get " & "billednr.dat" & " " & netsti & "billednr.dat"
  Do While Inet.StillExecuting
      DoEvents
  Loop
     
  Inet.Execute , "Get " & "filnavn.dat" & " " & netsti & "filnavn.dat"
  Do While Inet.StillExecuting
      DoEvents
  Loop
       
  Inet.Execute , "CLOSE"
Avatar billede inglenook Praktikant
05. december 2005 - 20:28 #5
sf >> hvordan ser din Winsock_DataArrival ud...?
Avatar billede sf Nybegynder
05. december 2005 - 21:40 #6
ser sådan ud :

  Winsock.GetData strdata
    If Left(strdata, 2) = "Ok" Then
    Call SendData
    Exit Sub
    End If
Avatar billede sf Nybegynder
05. december 2005 - 21:40 #7
har msinet.ocx en funktion til at sende filer med? en en funktion til at lave en server at modtage dem med?
Avatar billede inglenook Praktikant
05. december 2005 - 21:51 #8
hvis du ikke sender andet end "ok" (feks. vbcrlf) proev:
If Right(strdata, 2) = "Ok" Then
Avatar billede sjh Nybegynder
05. december 2005 - 21:59 #9
sf > Ja hvis du sender det til en FTP-Servr ;)

Men jeg går ikke ud fra at det bliver sendt til en FTP-Server.. men prøv at se lidt på denne her :
File Transfer : http://www.winsockvb.com/article.php?article_id=37&page=1 (Har ikke selv prøvet den)
Avatar billede sf Nybegynder
05. december 2005 - 22:01 #10
inglenook >> mint problem er at den slet ikke kommer til  DataArrival
Avatar billede sjh Nybegynder
05. december 2005 - 22:10 #11
hvor setter du dit loop ??

Do
  DoEvents
Loop Until complete = True

og hvad stopper dit loop?? du kommer jo ikke ud af den funktion som loppet køre i..
Avatar billede sf Nybegynder
05. december 2005 - 22:20 #12
sjh>> ville jeg ikke bare kunne skrive min egen ftp server så?
Avatar billede sjh Nybegynder
05. december 2005 - 22:23 #13
sf > Jo så gør du da bare det.. men det er altså ikke få begynder.. ;)
Avatar billede sjh Nybegynder
05. december 2005 - 22:25 #14
men du kunne måske bruge ..Winsock1_SendComplete() til noget..

Option Explicit

Private blnComplete As Boolean

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
...
....
  If blnComplete = True Then
    Call SendData
  End If
...
....
End Sub

Private Sub Winsock1_SendComplete()
  blnComplete = True
End Sub
Avatar billede sjh Nybegynder
05. december 2005 - 22:29 #15
sf > Du kan jo nok se hvis du ikke engang kan lave en "Simple" File Transfer.. tror du så at du kunne lave din egen ftp-server ??
Avatar billede sf Nybegynder
05. december 2005 - 22:33 #16
regnede med der var en ocx til dette.

har brugt sendcomplete ellers tak.
Avatar billede sjh Nybegynder
05. december 2005 - 22:37 #17
der findes også nogle ftp-server-ocx men dem skal man betale for.. vil du det??

ellers er det jo bare at gå igang med (FTP Protocol) : http://cie.bilkent.edu.tr/Topics/69.htm
Avatar billede sf Nybegynder
05. december 2005 - 22:38 #18
det jeg gøre .. jeg sender at nu vil jeg starte en fil. derefter har jeg dette loop:
Do
    DoEvents
   
    Loop Until filefin = True
hvor filefin førs bliver true når filen er færdig sendt. i min DataArrival venter jeg så på et "ok" fra serverne der siger at data er kommet over. men når jeg køre mit:
Do
    DoEvents
   
    Loop Until filefin = True
kommer den aldrig til DataArrival som den ellers har gjort. problemet er at det er en ocx fil så der skal køre noget hele tiden for at den ikke bare bliver lukket igen.


du skriver :

hvor setter du dit loop ??

Do
  DoEvents
Loop Until complete = True

og hvad stopper dit loop?? du kommer jo ikke ud af den funktion som loppet køre i..

dvs. min
Do
    DoEvents
   
    Loop Until filefin = True
skal ligger under DataArrival  eller hvad?
Avatar billede sf Nybegynder
05. december 2005 - 22:39 #19
er der ingen gratis ftp-server-ocx? ja ellers kunne jeg godt finde på at betale for den
Avatar billede sjh Nybegynder
05. december 2005 - 22:47 #20
Avatar billede sf Nybegynder
05. december 2005 - 22:50 #21
ok.. men ville nu heller have det jeg har da næsten virker til at virke.. du har ikke en kommentar til min lille fri stil?
Avatar billede sjh Nybegynder
05. december 2005 - 22:54 #22
Hvor mange MB er filerne ca. på??
Avatar billede sf Nybegynder
05. december 2005 - 22:56 #23
hmm  har ikke været et problem før men mellem 0.3 - 5
Avatar billede sf Nybegynder
05. december 2005 - 22:59 #24
det hele kørte ellers fint ind til jeg prøvede det et sted hvor serveren modtog pakkerne i omvendt række selv om jeg ventede med at sende den næste til jeg havde fået Winsock_SendComplete
Avatar billede sf Nybegynder
05. december 2005 - 23:01 #25
jeg kan ikke bede min winsocket komponent om at se efter om der kommer noget?
Avatar billede sjh Nybegynder
05. december 2005 - 23:14 #26
Når det ikke er mere så kan du sende det hele på engang.. det skal bare sendes som binary..

' Call SendBinary(Winsock1, "C:\testfile.xxx")
Public Sub SendBinary(objWS As Object, strFile As String)
Dim intFree As Integer
Dim arrData() As Byte

  intFree = FreeFile
  Open strFile For Binary Access Read As #intFree
    ReDim arrData(LOF(intFree) - 1) As Byte
    Get #intFree, 1, arrData
  Close #intFree

  ' objWS er din Winsock
  Call objWS.SendData(arrData)
End Sub


' Det her på din server del..
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim intFree As Integer
Dim arrData() As Byte

  ReDim arrData(bytesTotal) As Byte
  Call Winsock1.GetData(s, vbByte, bytesTotal)

  intFree = FreeFile
  Open "C:\Savefile.xxx" For Binary Access Write As #intFree
    Put #intFree, 1, arrData
  Close #intFree
End Sub


så får kan du tjekke om filen er send under ..Winsock1_SendComplete()
Avatar billede sjh Nybegynder
05. december 2005 - 23:16 #27
Du skal lige lave den her om til arrData og ikke s :D
Call Winsock1.GetData(arrData, vbByte, bytesTotal)
Avatar billede sjh Nybegynder
05. december 2005 - 23:20 #28
se efter om der kommer noget?

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Me.Caption = bytesTotal & Now
..
...
Avatar billede sf Nybegynder
05. december 2005 - 23:34 #29
hvor store filer kan jeg sende på engang?
Avatar billede sjh Nybegynder
05. december 2005 - 23:38 #30
Ja det kommer jo and på dine RAM.. men ca. 10 til 20 MB.. måske mere..
Avatar billede sjh Nybegynder
05. december 2005 - 23:39 #31
er det noget som skal sendet over Internettet eller bare localt
Avatar billede sf Nybegynder
05. december 2005 - 23:44 #32
det skal være localt. vil være 250-500 sdram .. hvad vil være det meste jeg kunne sende sikkert?
Avatar billede sf Nybegynder
05. december 2005 - 23:45 #33
nej skal faktisk også være over internettet.
Avatar billede sjh Nybegynder
05. december 2005 - 23:51 #34
ja sikkert er jo at sende 1 byte :D men du skal nok ikke regne med at kunne sende så meget over Internettet..

Jeg lavede en gang en test på local netværk.. og den kunne godt tage en fil på 250 MB.. men 512 MB ram og 768 MB på server..
Avatar billede sjh Nybegynder
05. december 2005 - 23:52 #35
MED 512 MB ram og 768 MB på server..
Avatar billede sf Nybegynder
05. december 2005 - 23:57 #36
ok hvad med over internettet?
Avatar billede sjh Nybegynder
05. december 2005 - 23:59 #37
>Jeg lavede en gang en test på local netværk..<
Avatar billede sjh Nybegynder
06. december 2005 - 00:01 #38
sorry mig der læser forkert..
internettet ja.. men det vil jo tag langtid.. og den suger alt din ram så du kan altså ikke lave andet end at se på ;)
Avatar billede sjh Nybegynder
06. december 2005 - 00:05 #39
Du smider 250 MB i arrData() og Winsock bruger sikkert også (Et skud: 250 MB) så du kan godt se hvad der er tilbage af ram..
Avatar billede sf Nybegynder
06. december 2005 - 00:06 #40
ok.. men jeg kan ikke lave en doevents fra en anden funktion som også vil se om der kommer noget nyt i winsock_DataArrival?
Avatar billede sjh Nybegynder
06. december 2005 - 00:08 #41
winsock_DataArrival er en event.. hvad vil du så bruge doevents til??
Avatar billede sf Nybegynder
06. december 2005 - 00:11 #42
problemet er at det er en ocx fil så der skal køre noget hele tiden for at den ikke bare bliver lukket igen.
Avatar billede sjh Nybegynder
06. december 2005 - 00:14 #43
Hvad?? den køre da så længe dit progarm køre.. med mindre du disconnecter eller der kommer en fejl..
Avatar billede sf Nybegynder
06. december 2005 - 00:18 #44
ja men mit program lukker ned når man har trykket send filer. derfor skal jeg finde en måde at vente med at lukke ocx'en ned på!?
Avatar billede sjh Nybegynder
06. december 2005 - 00:20 #45
det skulle det da ikke gerne gøre så kan du jo ikke sende noget..
Avatar billede sjh Nybegynder
06. december 2005 - 00:23 #46
Lige nu lyder det som om du vil sende en fil ud i den blå luft.. og så skal den bare vente på at der kommer en computer forbi og snupper filen :D
Avatar billede sf Nybegynder
06. december 2005 - 00:24 #47
jo for får har jeg jo bare sendt data og når den så havde sendt dem lukkede den ned. men nu skal jeg jo vente på et svar fra serveren.
Avatar billede sjh Nybegynder
06. december 2005 - 00:31 #48
når du får en event fra ..Winsock1_SendComplete() så kan du lukke dit program.. du er altså nød til at vente til serveren har fået den data du sender ellers kan det jo være det samme..

Du lukker jo heller ikke din webbrowser før du har set den side du har du spørg web-serveren om vel.. du må vente til den har hentet den html som webbrowseren skal bruge for at vise siden :D
Avatar billede sf Nybegynder
06. december 2005 - 00:35 #49
ok men hvordan får jeg exe filen til at vente på at min ocx som sender data får et sendcomplete?
Avatar billede sjh Nybegynder
06. december 2005 - 00:38 #50
din ocx (min ocx) det er vel winsock du mener ik??
Avatar billede sf Nybegynder
06. december 2005 - 00:42 #51
men .. det er en ocx jeg har lavet.. det er den der sender og modtager data. men har så igen selvf. en winsock ocx
Avatar billede sf Nybegynder
06. december 2005 - 00:47 #52
men = nej :)
Avatar billede sjh Nybegynder
06. december 2005 - 00:51 #53
Du har altså lavet en UserControl med en winsock på.. og det er den der skal styre det hele eller hvad..

Hvis Ja.. så er det jo sendcomplete under din UserControl du skal bruge..
Avatar billede sf Nybegynder
06. december 2005 - 00:57 #54
ja.. men hvordan ville sendcomplete under min UserControl så se ud? og så skal min exe fil stå i en
do
doevents
loop until UserControl.sendcomplete  = true eller?
Avatar billede sjh Nybegynder
06. december 2005 - 01:09 #55
' ----------------- På din UserControl --------------
Option Explicit

Public Event SendComplete() ' Event fra din UserControl

Private Sub Winsock_SendComplete() ' Event fra din WINSOCK som er på din UserControl
  ' Når Winsock køre sin SendComplete event vil den køre din
  ' UserControl SendComplete event på din Form.
  RaiseEvent SendComplete
End Sub
' ----------------- På din UserControl --------------


' ----------------- På din Form --------------
'Private Sub NAVNET_PÅ_DIN_USERCONTROL_SendComplete()
'
'End Sub
' ----------------- På din Form --------------
Avatar billede sf Nybegynder
08. december 2005 - 10:47 #56
Mit problem er jo ikke at jeg skal vente på data er sendt .. mit problem er at jeg skal vente på svar fra serveren
Avatar billede sf Nybegynder
05. november 2012 - 00:38 #57
lukker nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester