Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Chatti yhdistys ongelma [vb.net]

Sivun loppuun

vsbs [19.03.2006 15:52:15]

#

Yritän väsätä tämmöst chatti ohjelmaa mis on winsock.
klientti:

Private Sub ohjelma_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        klientti.RemoteHost = klientti.LocalHostName
        klientti.LocalPort = 4500
    End Sub

    Private Sub yhdistä_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yhdistä.Click
        klientti.Close()
        klientti.Connect() ' täs on virhe
    End Sub

    Private Sub sendi_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sendi.TextChanged
        klientti.SendData(sendi.Text)
    End Sub

    Private Sub klientti_ConnectEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles klientti.ConnectEvent
        MsgBox("yhistetty")
    End Sub

    Private Sub klientti_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles klientti.DataArrival
        Data = ""
        klientti.GetData(data)
        saapuu.Text = data
    End Sub
End Class

servu:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        servu.LocalPort = 4500
        servu.Listen()
        ohjelma.Show()
    End Sub

    Private Sub servu_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles servu.ConnectionRequest
        servu.Close()
        servu.Accept(0)
    End Sub

    Private Sub sendi_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sendi.TextChanged
        servu.SendData(sendi.Text)
    End Sub

    Private Sub servu_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles servu.DataArrival
        servu.GetData(saapuu.Text)
    End Sub
End Class

Tommost se valittaa:A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
Tai ei valita mut sinne immediate windowiin tulee tommone
Eli yhdistykses tulee ajonaikainen virhe mikä vikana?

vsbs [21.03.2006 21:33:02]

#

http://koti.mbnet.fi/elkku/errori1.JPG
otin tommose kuvan siit jos selventää ja jos joku osais auttaa.

vsbs [24.03.2006 20:49:55]

#

Eiks näist kukaa ny tiä?
oon jo kahen päivän ajan ettiny msdn:nstä mut ei löydy. Enkä tiä mitää muut foorumii mist vois kysellä

Sami [24.03.2006 21:05:56]

#

No jos kokeilisit vaikka käsitellä tuon virhetilanteen. Mielestäni tuossa virheilmoituksessa sanotaan, että se heittää TargetInvocationExceptionin, jota ei ole käsitelty.
En tiedä VB.netistä, sen virheen käsittelystä tai debuggausominaisuuksista sen kummemmin, mutta jonkinlaisen debuggitulosteen avulla tuosta voisi saada enemmän irti (esim. mahdollisten muuttujien arvot kun virhe tapahtuu).

Gaxx [24.03.2006 21:59:44]

#

Äkkiä katottuna ainakin:

klientti.LocalPort = 4500 -> klientti.RemotePort = 4500 (en oo sitten 100% varma kun on .net).

Ei kai toi winsock vb:n winsockista juurikaan poikkea.

vsbs [25.03.2006 16:48:19]

#

Vaihdoin ton:

Private Sub yhdistä_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles yhdistä.Click
        klientti.Close()
        klientti.Connect() ' täs on virhe
    End Sub

tommoseks:

Private Sub winsock1_ConnectionRequest(ByVal requestID As Long)
        If Winsock1.State <> SckClosed Then
            Winsock1.Close()
        End If
        Winsock1.Accept(requestID)
    End Sub

ja nyt valittaa:Error 1 'State' is a type in 'AxMSWinsockLib.AxWinsock' and cannot be used as an expression.
ja:
Error 2 Name 'SckClosed' is not declared.

Ton toisen tajuun et se ei oo esitelty mut tota ekaa en oikee kässää, et mitä pitäis tehä?

Gaxx [25.03.2006 17:17:25]

#

Nyt mennään vähän hakoteillä...

winsock1_ConnectionRequest(...) on yhteyksien hyväksymis tapahtuma. Toisekseen se ei liity millään tavalla klienttiin, vaan on vain serverin puolella tarvittava aliohjelma.

Mielestäni ensimmäisen viestin koodissa ei ole mitään muuta vikaa kuin se, että asetat klientille paikallisen portin(localport), vaikka et sitä mihinkään tarvitse(vain serveri tarvitsee paikallisen portin eli sen portin mitä se kuuntelee mahdollisten yhteyspyyntöjen varalta) ja jätä määrittämättä portin, johon haluaisit yhdistää(remoteport). Eli muuta ekan viestisi klientin koodin rivi

klientti.LocalPort = 4500

Muotoon

klientti.RemotePort = 4500

Kuten jo edellämainitsin.

vsbs [25.03.2006 17:47:06]

#

Samaa valittaa edelleen :(


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta