[VB] Ip buffer to small

Pagina: 1
Acties:

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 27-05 16:29

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Om een netwerk verbinding heb ik een programma geschreven in VB dat om de zoveel tijd een ping verstuurt, maar het probleem is dat met de huidige code ik een error krijg dat de ip buffer te klein is (al bij 250 Byte's) ik ben al even aan het googlen geweest en heb al op vbcode.com en a1vbcode.com gekeken maar kan nergens iets vinden.

Is er iemand die mij hiermee kan helpen, het programma moet namelijk bij klanten als connectie test draaien en het zou mooi zijn als ik boven de 250 bytse kan versturen
alvast bedankt

hieronder de code:


Public Function Ping(szAddress As String, ECHO As ICMP_ECHO_REPLY) As Long

Dim hPort As Long
Dim dwAddress As Long
Dim sDataToSend As String
Dim iOpt As Long

sDataToSend = Form1.Text3.Text
dwAddress = AddressStringToLong(szAddress)

Call SocketsInitialize
hPort = IcmpCreateFile()

If IcmpSendEcho(hPort, _
dwAddress, _
sDataToSend, _
Len(sDataToSend), _
0, _
ECHO, _
Len(ECHO), _
PING_TIMEOUT) Then

'the ping succeeded,
'.Status will be 0
'.RoundTripTime is the time in ms for
' the ping to complete,
'.Data is the data returned (NULL terminated)
'.Address is the Ip address that actually replied
'.DataSize is the size of the string in .Data
Ping = ECHO.RoundTripTime
Else: Ping = ECHO.status * -1
End If

Call IcmpCloseHandle(hPort)
Call SocketsCleanup

End Function

Verwijderd

Een ping moet juist zo klein mogelijk zijn. Dus onder de 250bytes lijkt mij zelfs beter. Waarom wil je meer versturen?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Waarom zou je in godsnaam een ping van meer dan 250 bytes willen versturen ? Het is alleen bedoeld voor een alive check, niet voor het versturen van Word documenten met embedded bitmaps. ;)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 27-05 16:29

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
Ik stuur een stuk of wat pings om een bepaalde tijd, en dan wil ik de verbinding testen, dus geen alive check maar kijken hoe snel de verbinding is rond bepaade tijden, De groote van het pakket kan dus bepalend zijn

Verwijderd

Dan moet je geen standaart PING gebruiken, maar maak dan gewoon je eigens send/receive-ping-dinges met de info die jij wilt.
Dus je wilt niet pingen, maar je eigen functie hebben. Schrijf die dan doormiddel van WinSock of iets.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Armageddon_2k schreef op 03 maart 2004 @ 12:47:
Ik stuur een stuk of wat pings om een bepaalde tijd, en dan wil ik de verbinding testen, dus geen alive check maar kijken hoe snel de verbinding is rond bepaade tijden, De groote van het pakket kan dus bepalend zijn
Met een ping test je 'turnaround time', geen bandbreedte.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 27-05 16:29

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
farlane ik heb et nooit over bandbreedte gehad, en ik weet wel dat et je round trip time is maar ik heb een VB programma geschreven die de ECHO reply logt en eenvoudig laat zien, maar nouw wil ik ook de packetsize verhogen, en in vb kom ik niet boven de 250 byte

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Mijn punt is, als je roundtrip wilt meten hoef je geen 250 bytes te versturen. En als je bandbreedte wilt meten moet je geen ping gebruiken.

Als je roundtrip time wilt meten moet je een klein pakketje sturen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • DigiK-oz
  • Registratie: December 2001
  • Laatst online: 21:47
Gebruik je deze definitie van ICMP_ECHO_REPLY ?

code:
1
2
3
4
5
6
7
8
9
10
Public Type ICMP_ECHO_REPLY
    Address         As Long
    status          As Long
    RoundTripTime   As Long
    DataSize        As Integer
    Reserved        As Integer
    DataPointer     As Long
    Options         As ICMP_OPTIONS
    Data            As String * 250
End Type


String * 250 says it all....

Whatever


Verwijderd

Buiten sjis zijn opmerking om. Die naar alle waarschijnlijkheid jouw probleem veroorzaakt.
Zodra je de package size wilt verhogen moet je dus zeker geen gebruik maken van ICMP_ECHO_REPLY met zijn beperkingen. Waarom niet je eigen functie zonder beprekingen?

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 27-05 16:29

Armageddon_2k

Trotse eigenaar: Yamaha R6

Topicstarter
_/-\o_ SJIS _/-\o_

btw. winsock is leuk (als je niet een willekeurige verbinding wilt gebruiken :P:P)
Pagina: 1