Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

WinSock og chatteprogram


Anbefalte innlegg

Jeg prøver å lage et enkelt chatte program, bare for å lære litt om winsock. Men jeg sliter litt. Jeg skal sende litt tekst, men får bare sendt tekst en gang. Deretter får jeg bare error. Har laget ett "delprogramm" for å teste ut hovedprogrammet. Her er koden:

 

Code:

'Hovedprogram
Private Sub Command1_Click()
Winsock.Close
Winsock.RemoteHost = Text2.Text
Winsock.RemotePort = 10101
Winsock.Connect

End Sub

Private Sub Form_Load()
txtoutput.Enabled = False
txtsendtxt.Enabled = False
cmdSend.Enabled = False
Text2.TabIndex = 0
Label1.BackColor = &HFF&
Label2.Caption = "Not Connected"
' Winsock code
Winsock.LocalPort = 10101
Winsock.Listen
End Sub

Private Sub Winsock_Close()
txtoutput.Enabled = False
txtsendtxt.Enabled = False
cmdSend.Enabled = False
Text2.SetFocus
Text2.Locked = False
Label1.BackColor = &HFF&
Label2.Caption = "Not Connected"
End Sub

Private Sub Winsock_Connect()
Label1.BackColor = &HFF00&
Label2.Caption = "Connected"
txtoutput.Enabled = True
txtsendtxt.Enabled = True
Text2.Locked = True
End Sub

Private Sub Winsock_ConnectionRequest(ByVal RequestID As Long)
Winsock.Close
Winsock.Accept RequestID
Label1.BackColor = &HFF00&
Label2.Caption = "Connected"
txtoutput.Enabled = True
txtsendtxt.Enabled = True
Text2.Locked = True
cmdSend.Enabled = True
End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim tEmp As String
Dim newData As String
tEmp = txtoutput.Text
Winsock.GetData newData
txtoutput.Text = tEmp & vbCrLf & newData
Winsock.Close
End Sub

Private Sub Winsock_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long,
ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Error:" & vbCrLf & vbCrLf & Description, vbCritical, "ChtR - Error"
End Sub

 

Og hjelpeprogrammet:

Code:

Private Sub cmdConnect_Click()
Winsock.RemoteHost = "127.0.0.1"
Winsock.RemotePort = 10101
Winsock.Connect
End Sub

Private Sub Command1_Click()
Winsock.SendData ("test")
DoEvents
Winsock.Close

End Sub

Private Sub Winsock_Connect()
MsgBox "Connected"
End Sub

Private Sub Winsock_Error(ByVal Number As Integer, Description As String, _
ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, _
ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Error: " & vbCrLf & Description, vbCritical
End Sub

 

Hva er galt, hva skal jeg endre på for å få det til å virke ?

 

Erroren jeg får er :

 

Runtime error '40006':

 

Wrong protocol or connection state for the requested transaction or request

 

Edit: måtte fikse litt slik at det ikke ødela designet til hw.no

 

[ Denne Melding var redigert av: Dumbo på 2002-10-14 22:27 ]

Lenke til kommentar
Videoannonse
Annonse

i tillegg burde du legge til en rutine for å sjekke og du er tilkoblet før du prøver å sende noe.

 

bytt ut winsock.senddata X med:

 

if winsock.state = 7 then

winsock.senddata X

end if

 

state 7 betyr at du er tilkoblet serveren som client (hvis det er på serversiden trenger du en annen state, men husker den ikke i hodet).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...