Avatar billede krismort Nybegynder
21. maj 2001 - 10:01 Der er 3 kommentarer og
1 løsning

winsock pakker

Hej
Jeg vil gerne sende en pakke over winsock som jeg har fået af vide skulle se sådan ud:

Send speech to the server
------------------------------------
byte ID (03)
word Size of Packet
byte Mode (0=say,2=emote,8=whipser,9=yell)
word Text Color
word Font
byte
  • Text

  • Hvordan fremstiller jeg sådan en pakke og sender den ?
    Avatar billede jennemaan Nybegynder
    21. maj 2001 - 10:18 #1
    du skal konstruere et bytearray... (se hjælperutiner nederst)
    .
    .
    .

    dim bPacket(0 To 0) as Byte
    dim bAdd() as Byte
    Dim bText() as Byte
    dim SizeOfpacket As Integer
    dim strText

    strText=\"Hopper op og ned og råwer Harjsa :o)\"

    SizeOfPacket=1+2+1+2+2+len(strText)

    bPaket(0)=03

    gsWordToBytes bAdd, SizeOfpacket
    psAddBytesToPacket bPacket, bAdd) \'Tilføj SizeOfPacket
    Redim bAdd(0 To 0) As Byte
    bAdd(0)=0 \'Say
    psAddBytesToPacket bPacket, bAdd) \'Tilføj action
    gsWordToBytes bAdd, 10 \'din text farve
    psAddBytesToPacket bPacket, bAdd) \'Tilføj farve
    gsWordToBytes bAdd, 16 \'din text font
    psAddBytesToPacket bPacket, bAdd) \'Tilføj font

    bText=strText \'smid din tekst ind i et bytearray
    psAddBytesToPacket bPacket, bText) \'Tilføj tekst

    .
    .
    .
    .









    Public Sub psAddBytesToPacket(ByRef larPacket() As Byte, larAdd() As Byte)

      Dim lintStart As Integer
      Dim lintC As Integer

      lintStart = UBound(larPacket)
      ReDim Preserve larPacket(0 To lintStart + UBound(larAdd) + 1)
      For lintC = 0 To UBound(larAdd)
        larPacket(lintStart + lintC + 1) = larAdd(lintC)
      Next lintC
    End Sub


    Public Sub gsWordToBytes(ByRef b() As Byte, IntNumber As Long)
        b(1) = IntNumber \\ (2 ^ 8)
        b(0) = (IntNumber - (b(1) * 2 ^ 8))
    End Sub


    Jeg har ikke testet koden, men det er noget i den retning du skal bruge.

    /Jennemaan
    Avatar billede jennemaan Nybegynder
    21. maj 2001 - 10:24 #2
    Jeg har lige testet og rettet.

    Det skal laves således:

    Sub Pack()
    Dim bPacket() As Byte
    Dim bAdd() As Byte
    Dim bText() As Byte
    Dim bWord(0 To 1) As Byte
    Dim SizeOfpacket As Long
    Dim strText

    strText = \"Hopper op og ned og råwer Harjsa :o)\"

    SizeOfpacket = 1 + 2 + 1 + 2 + 2 + Len(strText)

    ReDim bPacket(0 To 0) As Byte
    bPacket(0) = 3

    gsWordToBytes bWord, SizeOfpacket
    psAddBytesToPacket bPacket, bWord \'Tilføj SizeOfPacket
    ReDim bAdd(0 To 0) As Byte
    bAdd(0) = 0 \'Say
    psAddBytesToPacket bPacket, bAdd \'Tilføj action
    gsWordToBytes bWord, 10 \'din text farve
    psAddBytesToPacket bPacket, bWord \'Tilføj farve
    gsWordToBytes bWord, 16 \'din text font
    psAddBytesToPacket bPacket, bWord \'Tilføj font

    bText = strText \'smid din tekst ind i et bytearray
    psAddBytesToPacket bPacket, bText \'Tilføj tekst


    End Sub





    Public Sub psAddBytesToPacket(ByRef larPacket() As Byte, larAdd() As Byte)

      Dim lintStart As Integer
      Dim lintC As Integer

      lintStart = UBound(larPacket)
      ReDim Preserve larPacket(0 To lintStart + UBound(larAdd) + 1)
      For lintC = 0 To UBound(larAdd)
        larPacket(lintStart + lintC + 1) = larAdd(lintC)
      Next lintC
    End Sub


    Public Sub gsWordToBytes(ByRef b() As Byte, IntNumber As Long)
        b(1) = IntNumber \\ (2 ^ 8)
        b(0) = (IntNumber - (b(1) * 2 ^ 8))
    End Sub


    /Jennemaan
    Avatar billede krismort Nybegynder
    21. maj 2001 - 11:07 #3
    mange tak jennemaan
    Lige et tillægsspørgsmål hvis det er acceptabelt. Hvordan tager jeg en given pakke og finder ud af hvilket ID den har ?
    Avatar billede jennemaan Nybegynder
    21. maj 2001 - 11:13 #4
    id=bPacket(0) ?
    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