Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: winsock - gubię pakiety??
grigor80




Typ: neutral
Postów: 7
Zarejestrowany: Oct 2004
winsock - gubię pakiety??

Witam!
Mam oto taki problem:

Przesyłam plik z serwera a klient go odbiera. jednak plik nie przychodzi w całości, tak jakby gubił gdzieś jakis pakiet... Nie mogę znaleźć błędu, może Wam się uda?

SERWER:

Function SendFile(sciezka As String)        'przesyłanie pliku
Dim DataChunk As String                    'fragment do przesyłania
 
  On Error Resume Next
  If serverTCPIP.State <> sckConnected Then Exit Function
  ProgressBar1.Min = 0                        'wskaźnik pobierania
  ProgressBar1.Max = FileLen(sciezka)
  ProgressBar1.Value = 0
  serverTCPIP.SendData "rozmiar" & Str(FileLen(sciezka)) 'przesyła rozmiar pliku
  Pause 200
  serverTCPIP.SendData "sciezka" & sciezka 'przesyła scieżkę
  Pause 200
  DataChunk = Empty
  Open sciezka For Binary As #1      'otwarcie pliku do przesyłania
  lstLog.AddItem "** Trwa przesyłanie pliku... **"
  lstLog.ListIndex = lstLog.NewIndex
  lstLog.AddItem ""    'wpis do logu
  Do While Not EOF(1)
    DataChunk = Input(5120, #1)
    serverTCPIP.SendData "frag  " & DataChunk      'przesyła "kawałek" pliku
    Pause 200
    ProgressBar1.Value = ProgressBar1.Value + Len(DataChunk)
    DoEvents
  Loop
  Close #1                              'zamknięcie pliku
  If ProgressBar1.Value = FileLen(sciezka) Then
    lstLog.AddItem "** Plik przesłano **"
    lstLog.ListIndex = lstLog.NewIndex
    lstLog.AddItem ""    'wpis do logu
    ProgressBar1.Value = 0
  End If
  nazwa = wytnij(sciezka)
  serverTCPIP.SendData "save  " & nazwa  'polecenie dla klienta do zapisu pliku
  Pause 200
End Function

KLIENT:

Private Sub klientTCPIP_DataArrival(ByVal bytesTotal As Long) 'przyjście danych
Dim pakiet As String
Dim dane As String
Dim opcja As String
Dim i As Integer
 
  opcja = Empty
  dane = Empty
  pakiet = Empty
  klientTCPIP.GetData pakiet              'odbieranie pakietu danych
  opcja = Left(pakiet, 7)                'przeznaczenie pakietu
  dane = Right(pakiet, Len(pakiet) - 7)  'dane z pakietu

  Select Case opcja

    Case "frag  "
      plik = plik & dane                    'sklejanie fragmentów stringa w plik
      ProgressBar1.Value = ProgressBar1.Value + Len(dane)
      dane = Empty



Function Save(sciezka As String)            'sciezka: App.Path & "\Odebrane\" & dane
 
  Open sciezka For Binary As #1 'Otwórz
  Put #1, , plik  'zapisz
  Close #1    'zamknij
  plik = Empty
  ProgressBar1.Value = 0
 
End Function

22-03-2005 20:42
Pokaż profil grigor80  Wyślij email do grigor80   Odwiedź stronę grigor80       2123345
Wszystkich odpowiedzi: 0 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1