| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Fil overførelse Fra : Tajen | 
  Dato :  18-01-02 13:45 |  
  |   
            Kan man overføre filer med winsock???...
 
 
  
            
             |   |   
            
        
 
            
         
           Thomas Nielsen (18-01-2002) 
         
	
            | Kommentar Fra : Thomas Nielsen | 
  Dato :  18-01-02 14:39 |  
  |   
            "Tajen" <tajen@genistreg.dk> wrote in message
 news:3c481937$0$62877$edfadb0f@dspool01.news.tele.dk...
 > Kan man overføre filer med winsock???...
 
 Ja det kan du, men sender du store mængder binære data giver det ofte
 problemer.
 
 En mulig løsning er evt at uuencode din fil først også sende den.
 
 /Thomas
 
 
  
            
             |   |   
            
        
 
            
         
           Tomas Christiansen (18-01-2002) 
         
	
            | Kommentar Fra : Tomas Christiansen | 
  Dato :  18-01-02 23:40 |  
  |   
            Thomas Nielsen skrev:
 > Ja det kan du, men sender du store mængder binære data giver det
 ofte
 > problemer.
 
 Hvorfor?
 Hvad kan der være problemer med?
 
 -------
 Tomas
 
  
            
             |   |   
            
        
 
            
         
            Morten Snedker (19-01-2002) 
         
	
            | Kommentar Fra : Morten Snedker | 
  Dato :  19-01-02 15:51 |  
  |   
            On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 <toc@blikroer.removethis.dk> wrote:
 
 >Thomas Nielsen skrev:
 >> Ja det kan du, men sender du store mængder binære data giver det
 >ofte
 >> problemer.
 >
 >Hvorfor?
 >Hvad kan der være problemer med?
 
 Næh vel? Så vidt jeg ved er det Winsock'en der bruges, ex. til
 Internet...ik' ?
 
 /Snedker
  
            
             |   |   
            
        
 
            
         
             Vestergaard (19-01-2002) 
         
	
            | Kommentar Fra : Vestergaard | 
  Dato :  19-01-02 16:32 |  
  |   
            
 "Morten Snedker" <morten_nospam@dbconsult.dk> skrev i en meddelelse
 news:3c49879f.1039314@news.inet.tele.dk...
 > On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 > <toc@blikroer.removethis.dk> wrote:
 >
 > >Thomas Nielsen skrev:
 > >> Ja det kan du, men sender du store mængder binære data giver det
 > >ofte
 > >> problemer.
 > >
 > >Hvorfor?
 > >Hvad kan der være problemer med?
 >
 > Næh vel? Så vidt jeg ved er det Winsock'en der bruges, ex. til
 > Internet...ik' ?
 >
 > /Snedker
 
 
 Da jeg prøvede at lave en filoverførsel med winsock var der det problem at
 hvis det var for store mængder data kunne det ikke være i bufferen, og
 derfor ikke sendes. Jeg fandt ud af at jeg skulle splitte filen op og sende
 delene hver for sig, og så samle den igen på remote-siden.
 Spørg ikke om et eksempel for jeg gik død med projektet :(
 
 Jacob V.
 
 
  
            
             |   |   
            
        
 
            
         
              Tajen (19-01-2002) 
         
	
            | Kommentar Fra : Tajen | 
  Dato :  19-01-02 17:31 |  
  |   
            "Vestergaard" <svester@post5.tele.dk> skrev i en meddelelse
 news:3c49925f$0$231$edfadb0f@dspool01.news.tele.dk...
 >
 > "Morten Snedker" <morten_nospam@dbconsult.dk> skrev i en meddelelse
 > news:3c49879f.1039314@news.inet.tele.dk...
 > > On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 > > <toc@blikroer.removethis.dk> wrote:
 > >
 > > >Thomas Nielsen skrev:
 > > >> Ja det kan du, men sender du store mængder binære data giver det
 > > >ofte
 > > >> problemer.
 > > >
 > > >Hvorfor?
 > > >Hvad kan der være problemer med?
 > >
 > > Næh vel? Så vidt jeg ved er det Winsock'en der bruges, ex. til
 > > Internet...ik' ?
 > >
 > > /Snedker
 >
 >
 > Da jeg prøvede at lave en filoverførsel med winsock var der det problem at
 > hvis det var for store mængder data kunne det ikke være i bufferen, og
 > derfor ikke sendes. Jeg fandt ud af at jeg skulle splitte filen op og
 sende
 > delene hver for sig, og så samle den igen på remote-siden.
 > Spørg ikke om et eksempel for jeg gik død med projektet :(
 >
 > Jacob V.
 >
 >
 Nu er det bare sådan at hvis jeg forsøge at sende en fil..
 åbner den med binary access... sender ca. 4byte af en fil på 20mb...
 
 
 
  
            
             |   |   
            
        
 
            
         
               Tomas Christiansen (21-01-2002) 
         
	
            | Kommentar Fra : Tomas Christiansen | 
  Dato :  21-01-02 00:12 |  
  |   
            Tajen skrev:
 > > "Morten Snedker" <morten_nospam@dbconsult.dk> skrev i en
 meddelelse
 > > news:3c49879f.1039314@news.inet.tele.dk...
 > > > On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 > > > <toc@blikroer.removethis.dk> wrote:
 
 osv. osv.
 
 Vær venlig kun at citere det (dvs. den eller de få linier), som du
 svarer på.
 
 > Nu er det bare sådan at hvis jeg forsøge at sende en fil..
 > åbner den med binary access... sender ca. 4byte af en fil på 20mb...
 
 Okay, så se her:
 
 1. Opret et almindeligt exe-projekt (kald det GET) med en form.
 2. Placer en label på formen, kald labelen lblProgress og sæt dens
 AutoSize egenskab til True.
 3. Læg følgende kode ind:
 
   Option Explicit
 
   Private bFirst As Boolean
   Private iFile As Integer
 
   Private Sub Form_Load()
     bFirst = True
     WS.LocalPort = 30111
     WS.Listen
   End Sub
 
   Private Sub WS_Close()
     If iFile <> 0 Then Close #iFile: iFile = 0
     WS.Close
     lblProgress = "Done"
     Form_Load
   End Sub
 
   Private Sub WS_ConnectionRequest(ByVal requestID As Long)
     WS.Close
     WS.Accept requestID
     lblProgress = "0"
   End Sub
 
   Private Sub WS_DataArrival(ByVal bytesTotal As Long)
     Dim bData() As Byte
     Dim bNameLen() As Byte
     Dim sFilename As String
     If bytesTotal = 0 Then Exit Sub
     If bFirst Then
       WS.GetData bNameLen, , 2
       WS.GetData bData, , bNameLen(0)
       sFilename = bData
       iFile = FreeFile
       Open sFilename & ".WSGET" For Binary As #iFile
       bFirst = False
     End If
     WS.GetData bData
     Put #iFile, , bData
     lblProgress = LOF(iFile)
     lblProgress.Refresh
   End Sub
 
   Private Sub WS_Error(ByVal Number As Integer, Description As String,
 ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
 ByVal HelpContext As Long, CancelDisplay As Boolean)
     MsgBox "Get error: " & Description
     Unload Me
   End Sub
 
 
 4. Opret et nyt almindeligt exe-projekt (kald det PUT) med en form.
 5. Placer en label på formen, kald labelen lblProgress og sæt dens
 AutoSize egenskab til True.
 6. Placer en textbox på formen og kald den txtFile.
 7. Læg følgende kode ind:
 
   Option Explicit
 
   Const BlockSize As Long = 60000
   Private iFile As Integer
 
   Private Sub txtFile_KeyPress(KeyAscii As Integer)
     If KeyAscii = 13 Then
       txtFile.Enabled = False
       WS.Connect "127.0.0.1", 30111
     End If
   End Sub
 
   Private Sub WS_Connect()
     Dim bData() As Byte
     iFile = FreeFile
     Open txtFile.Text For Binary As #iFile
     bData = Chr(LenB(txtFile.Text)) & txtFile.Text
     WS.SendData bData
   End Sub
 
   Private Sub WS_Error(ByVal Number As Integer, Description As String,
 ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
 ByVal HelpContext As Long, CancelDisplay As Boolean)
     MsgBox "Put error: " & Description
     Unload Me
   End Sub
 
   Private Sub WS_SendComplete()
     Dim lBytesLeft As Long
     Dim bData() As Byte
     lBytesLeft = LOF(iFile) - Loc(iFile)
     If lBytesLeft > 0 Then
       If lBytesLeft > BlockSize Then
         ReDim bData(1 To BlockSize)
       Else
         ReDim bData(1 To lBytesLeft)
       End If
       Get #iFile, , bData
       WS.SendData bData
       lblProgress = Loc(iFile) & " / " & LOF(iFile)
       lblProgress.Refresh
     Else
       Close #iFile: iFile = 0
       WS.Close
       txtFile.Enabled = True
     End If
   End Sub
 
 8. Start nu GET og PUT.
 9. Indtast et filnavn i PUT programmet og tryk Enter.
 Nu skulle PUT gerne sende filnavn og indhold til GET, som tager
 filnavnet og tilføjer ".WSGET" og gemmer data.
 10. Fortsæt med punkt 9 lige så mange gange du har lyst.
 
 Bemærk at denne kode er IKKE "produktionsklar". Der er totalt mangel
 på fejlhåndtering og der er ganske mange ting, som der ikke tages
 højde for, men er kun men som et "bevis"/eksempel på at
 Winsock-kontrollen sagtens kan overføre binære data uden nogensomhelst
 former for problemer.
 
 -------
 Tomas
 
  
            
             |   |   
            
        
 
            
         
                Mads Vanggaard (23-01-2002) 
         
	
            | Kommentar Fra : Mads Vanggaard | 
  Dato :  23-01-02 15:32 |  
  |   
            Dette er en NON-blocking overførsel. Er der nogen som kan lave samme type
 eksempel bare med blocking??
 
 "Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
 news:a2fiol$17kj$1@news.cybercity.dk...
 > Tajen skrev:
 > > > "Morten Snedker" <morten_nospam@dbconsult.dk> skrev i en
 > meddelelse
 > > > news:3c49879f.1039314@news.inet.tele.dk...
 > > > > On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 > > > > <toc@blikroer.removethis.dk> wrote:
 >
 > osv. osv.
 >
 > Vær venlig kun at citere det (dvs. den eller de få linier), som du
 > svarer på.
 >
 > > Nu er det bare sådan at hvis jeg forsøge at sende en fil..
 > > åbner den med binary access... sender ca. 4byte af en fil på 20mb...
 >
 > Okay, så se her:
 >
 > 1. Opret et almindeligt exe-projekt (kald det GET) med en form.
 > 2. Placer en label på formen, kald labelen lblProgress og sæt dens
 > AutoSize egenskab til True.
 > 3. Læg følgende kode ind:
 >
 >   Option Explicit
 >
 >   Private bFirst As Boolean
 >   Private iFile As Integer
 >
 >   Private Sub Form_Load()
 >     bFirst = True
 >     WS.LocalPort = 30111
 >     WS.Listen
 >   End Sub
 >
 >   Private Sub WS_Close()
 >     If iFile <> 0 Then Close #iFile: iFile = 0
 >     WS.Close
 >     lblProgress = "Done"
 >     Form_Load
 >   End Sub
 >
 >   Private Sub WS_ConnectionRequest(ByVal requestID As Long)
 >     WS.Close
 >     WS.Accept requestID
 >     lblProgress = "0"
 >   End Sub
 >
 >   Private Sub WS_DataArrival(ByVal bytesTotal As Long)
 >     Dim bData() As Byte
 >     Dim bNameLen() As Byte
 >     Dim sFilename As String
 >     If bytesTotal = 0 Then Exit Sub
 >     If bFirst Then
 >       WS.GetData bNameLen, , 2
 >       WS.GetData bData, , bNameLen(0)
 >       sFilename = bData
 >       iFile = FreeFile
 >       Open sFilename & ".WSGET" For Binary As #iFile
 >       bFirst = False
 >     End If
 >     WS.GetData bData
 >     Put #iFile, , bData
 >     lblProgress = LOF(iFile)
 >     lblProgress.Refresh
 >   End Sub
 >
 >   Private Sub WS_Error(ByVal Number As Integer, Description As String,
 > ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
 > ByVal HelpContext As Long, CancelDisplay As Boolean)
 >     MsgBox "Get error: " & Description
 >     Unload Me
 >   End Sub
 >
 >
 > 4. Opret et nyt almindeligt exe-projekt (kald det PUT) med en form.
 > 5. Placer en label på formen, kald labelen lblProgress og sæt dens
 > AutoSize egenskab til True.
 > 6. Placer en textbox på formen og kald den txtFile.
 > 7. Læg følgende kode ind:
 >
 >   Option Explicit
 >
 >   Const BlockSize As Long = 60000
 >   Private iFile As Integer
 >
 >   Private Sub txtFile_KeyPress(KeyAscii As Integer)
 >     If KeyAscii = 13 Then
 >       txtFile.Enabled = False
 >       WS.Connect "127.0.0.1", 30111
 >     End If
 >   End Sub
 >
 >   Private Sub WS_Connect()
 >     Dim bData() As Byte
 >     iFile = FreeFile
 >     Open txtFile.Text For Binary As #iFile
 >     bData = Chr(LenB(txtFile.Text)) & txtFile.Text
 >     WS.SendData bData
 >   End Sub
 >
 >   Private Sub WS_Error(ByVal Number As Integer, Description As String,
 > ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,
 > ByVal HelpContext As Long, CancelDisplay As Boolean)
 >     MsgBox "Put error: " & Description
 >     Unload Me
 >   End Sub
 >
 >   Private Sub WS_SendComplete()
 >     Dim lBytesLeft As Long
 >     Dim bData() As Byte
 >     lBytesLeft = LOF(iFile) - Loc(iFile)
 >     If lBytesLeft > 0 Then
 >       If lBytesLeft > BlockSize Then
 >         ReDim bData(1 To BlockSize)
 >       Else
 >         ReDim bData(1 To lBytesLeft)
 >       End If
 >       Get #iFile, , bData
 >       WS.SendData bData
 >       lblProgress = Loc(iFile) & " / " & LOF(iFile)
 >       lblProgress.Refresh
 >     Else
 >       Close #iFile: iFile = 0
 >       WS.Close
 >       txtFile.Enabled = True
 >     End If
 >   End Sub
 >
 > 8. Start nu GET og PUT.
 > 9. Indtast et filnavn i PUT programmet og tryk Enter.
 > Nu skulle PUT gerne sende filnavn og indhold til GET, som tager
 > filnavnet og tilføjer ".WSGET" og gemmer data.
 > 10. Fortsæt med punkt 9 lige så mange gange du har lyst.
 >
 > Bemærk at denne kode er IKKE "produktionsklar". Der er totalt mangel
 > på fejlhåndtering og der er ganske mange ting, som der ikke tages
 > højde for, men er kun men som et "bevis"/eksempel på at
 > Winsock-kontrollen sagtens kan overføre binære data uden nogensomhelst
 > former for problemer.
 >
 > -------
 > Tomas
 >
 
 
  
            
             |   |   
            
        
 
            
         
                 Tomas Christiansen (23-01-2002) 
         
	
            | Kommentar Fra : Tomas Christiansen | 
  Dato :  23-01-02 22:49 |  
  |   
            Mads Vanggaard skrev:
 > Dette er en NON-blocking overførsel. Er der nogen som kan lave samme
 type
 > eksempel bare med blocking??
 >
 > "Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en
 meddelelse
 > news:a2fiol$17kj$1@news.cybercity.dk...
 > > Tajen skrev:
 > > > > "Morten Snedker" <morten_nospam@dbconsult.dk> skrev i en
 > > meddelelse
 > > > > news:3c49879f.1039314@news.inet.tele.dk...
 > > > > > On Fri, 18 Jan 2002 23:40:29 +0100, "Tomas Christiansen"
 > > > > > <toc@blikroer.removethis.dk> wrote:
 osv.osv.osv.osv.osv.osv.osv.osv.osv.osv.osv.osv.
 
 HVIS du dog bare gad KUN at citere de par linier, som du vil
 kommentere!
 
 Mig bekendt er det ikke muligt at styre i Winsock kontrollen, men det
 kan jo løses ved at vente med at sende, indtil en kvittering er
 modtaget. Når TCP-forbindelsen er åbnet, er den jo to-vejs, så det er
 ikke svært selv at bygge ind.
 
 -------
 Tomas
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |