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 Classservu:
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 ClassTommost 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?
http://koti.mbnet.fi/elkku/errori1.JPG
otin tommose kuvan siit jos selventää ja jos joku osais auttaa.
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ä
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).
Ä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.
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 Subtommoseks:
Private Sub winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> SckClosed Then
Winsock1.Close()
End If
Winsock1.Accept(requestID)
End Subja 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ä?
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.
Samaa valittaa edelleen :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.