[ Omega Warrior @ 23.01.2008. 08:42 ] @
Pozdrav, Imam problema sa socketima u VB.NET-u. Ovako: Radim projekt na kojem imam 2 aplikacije, jedna se izvodi na kompjuteru(WinXP,2k) a druga se izvodi na ručnom terminalu (WIN CE). Moja pitanja će biti uz kod: Glavni dio za primanje na WIN CE djelu: Code: If listener.Pending Then Application.DoEvents() RaiseEvent status("Pending OK") Application.DoEvents() Try Dim socket As Socket = listener.AcceptSocket RaiseEvent status("SOCKET prihvacen") Dim rBuffer(socket.Available) As Byte ' U velikom frameworku, ima jedno svojstvo (receivedBufferSize) u ovom Compact frameworku tog svojstva nema, pa ja nemogu otkrit veličinu buffera, ideje? Do socket.Receive(rBuffer) 'Za ovaj dio treba dinamički mijenjat veličinu polja (redim preserve) ali kod većih fajlova to je extremno sporo, ima koji bolji način? Loop While socket.Available > 0 RaiseEvent status("Velicina fajla :" & rBuffer.Length) Application.DoEvents() spremiFile(rBuffer) ' U ovoj funkciju uzimam cijeli array bytova i spremam u neki fajl uspjeh = True Catch ex As Exception Application.DoEvents() RaiseEvent status("ERR:" & ex.Message) Application.DoEvents() abort = True End Try End If Dio za slanje fajlova (WinXP, cijeli framework) : Dim tcp As New TcpClient Dim repeatCounter As Integer Dim i As Integer For i = 0 To repeatCounter Try tcp.Connect(ipAdresa, port.ToString) Dim nStream As NetworkStream = tcp.GetStream If nStream.CanWrite Then nStream.Write(data, 0, data.Length) ' Data su podatci koje šaljem... znam da i tu ima bolji na koji se to slanje izvodi... Ideje Else RaiseEvent greskaPriDownloadu("Greška pri downloadu") tcp.Close() End If tcp.Close() Return True Catch ex As System.Net.Sockets.SocketException repeatCounter += 1 ' Ako se ne uspije spojit trebalo bi 3 puta ponavljat, ali na ovj način neradi. (jer kad se ne uspije spojit on izaci socket exception i kaže da ciljni uređaj nije odgovorio u tih nekoliko sekundi... Catch ex As Exception errHandler(ex) tcp.Close() Return False End Try If repeatCounter = 2 Then Return False Next End Function U biti treba mi neki bolji način za primanje fajlova i slanje, jel ovo je i sporo i nesigurno... Bilo kakve ideje, sugestije dobrodošle. Hvala!! [Shadowed: dodati code tagovi.] [Ovu poruku je menjao Shadowed dana 23.01.2008. u 10:35 GMT+1] |