Avatar billede thewizard Nybegynder
27. februar 2008 - 06:30 Der er 14 kommentarer

Hader WinSock - og nu skal jeg fortælle jer hvorfor

;) Godt topic? Fik jeres opmærksomhed.

Jeg HADER WinSock i VB, pga: Laver jeg en text1, og command1.

Command1 sender text1.text til en connected IP. Sætter jeg så command1.default = True - OG SMADRER den store hånd ned på enter; Så sender den en besked som går igen, og igen, og igen. Og der er INGEN måder at stoppe den, for det er ikke et loop som sådan.

Hvis text1.text = "test", så bliver besked-string = "testtesttesttesttesttest". Dvs. der kommer én besked og ikke multi-beskeder.

Det driver mig til vanvid ;) Løsninger til dette, latterlige, problem, tildeles 200 point ;).
Avatar billede thewizard Nybegynder
27. februar 2008 - 06:34 #1
Nytter intet at lave:
-----------------------------
Public Sub cmdchatSend_Click()

        If Not txtServerChat.Text = "" & frmSplash.lblConnected.Caption = "1" Then
            'Sender teksten 
            WS.SendData text1.text
           
            'renser chat-linien
            text1.Text = ""
        End If

End Sub
-----------------------------

Og heller ikke


-----------------------------
dim fedninja as integer
fedninja = 0
Public Sub cmdchatSend_Click()
Fedninja = 1

        If Not txtServerChat.Text = "" & frmSplash.lblConnected.Caption = "1" & fedninja <> "0" Then
            'Sender teksten 
            WS.SendData text1.text
           
            'renser chat-linien
            text1.Text = ""

           
        End If
fedninja = 0
End Sub
-----------------------------
Avatar billede thewizard Nybegynder
27. februar 2008 - 06:35 #2
åh undskyld txtserverchat.text skulle naturligvis være text1.text
Avatar billede bauerdata Nybegynder
27. februar 2008 - 07:31 #3
Avatar billede thewizard Nybegynder
27. februar 2008 - 13:19 #4
Hvad hjælper det link? Koden virker jo, og sender data - det er bare muligt at lave et overflow af data til serveren.
Avatar billede thewizard Nybegynder
27. februar 2008 - 13:20 #5
og det er ikke muligt at få den til at sende 2x beskeder, lige efter hinanden - så bliver det lagt i samme "meddelelse"
Avatar billede sjh Nybegynder
27. februar 2008 - 15:45 #6
Kan du så ikke bare benytte dig af SendComplete()


Public Sub cmdchatSend_Click()
  If Not txtServerChat.Text = "" & frmSplash.lblConnected.Caption = "1" Then
    cmdchatSend.Enabled = False ' <- Tilføjet af sjh
    WS.SendData text1.Text
    text1.Text = ""
  End If
End Sub

Private Sub WS_SendComplete()
  cmdchatSend.Enabled = True
End Sub
Avatar billede thewizard Nybegynder
27. februar 2008 - 15:54 #7
Jeg prøver lige, sjh
Avatar billede thewizard Nybegynder
27. februar 2008 - 16:06 #8
Det virker, sjh - med lidt sideeffekter. Man kan ikk sende multi-beskeder lige efter hinanden. Dvs.

  WS.SendData "tja"
  WS.SendData "ninja"

Så vil den låse op, indtil tja er sendt, og "glemmer" ninja.

Jeg tror løsningen bliver en list, hvor alle send-beskeder bliver lagt i - og så en timer, som hvert milisec sender beskeden afsted.
Det er bare alt for advanceret løsning til et så simpelt problem.

Men dit svar hjalp, bare læg svar, sjh.
Avatar billede thewizard Nybegynder
27. februar 2008 - 16:06 #9
med multi beskeder mener jeg ikke:

  WS.SendData "tja"
  WS.SendData "ninja"

Men naturligvis:

text1.text = "tja"
call cmdchatsend_click

text1.text = "ninja"
call cmdchatsend_click
Avatar billede sjh Nybegynder
27. februar 2008 - 17:30 #10
Ja det er jo lidt svært at sige hvordan det skal laves på din løsning, men jeg vil nok vælge en løsning med flere winsock's, eller lave en commando som fortæller serveren at beskeden skal sendes til flere bruger.

Jeg springer point over.. ellers tak.
Avatar billede sjh Nybegynder
27. februar 2008 - 17:42 #11
ellers prøv med noget i den stil...


Dim i As Long
Dim arrUsers() As String

  ReDim arrUsers(1) As String
  arrUsers(0) = "tja"
  arrUsers(1) = "ninja"

  For i = LBound(arrUsers) To UBound(arrUsers)
    Text1.Text = arrUsers(i)
    Do Until cmdchatSend.Enabled = True
      DoEvents
    Loop
    Call cmdchatSend_Click
  Next
Avatar billede thewizard Nybegynder
27. februar 2008 - 18:18 #12
:) Jeg prøver engang. Men skal ikke sendes til flere brugere, så flere winsocks hjælper vel ikke.
Avatar billede thewizard Nybegynder
27. februar 2008 - 18:24 #13
Er glad for din hjælp, sjh - hader bare winsock ;).
Avatar billede thewizard Nybegynder
27. februar 2008 - 23:00 #14
Jeg satte det sammen med en list til at holde øje med alle meddelelser. Det virker ;).
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