Ik bne bezig om een remote control programma te maken voor een emulator project. Dit project werkt met TCP/IP communicate.
Ik gebruik visual basic.net
Ik gebruik deze class:
In mijn main form zet ik als volgt de connectie op
Eerst doe ik een global 'dim connect as new connect()'
als ik echter mijn class sluit met connection.close() dan wordt de verbinding verbroken en het object (connection) getermineerd. (ik wil namelijk naar meer dan 1 IP connecten of naar een andere poort)
Echter bij een reconnect krijg ik een
Hoe kan ik mijn object reactiveren? (of hergebruiken)
Ik gebruik visual basic.net
Ik gebruik deze class:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Public Class Connect
Private strDomain As [String]
Private arrDomain As [Byte]()
Private tcpc As New TcpClient()
Private result As String
Private command As String
Private m_ConnectionPort As Integer
Private m_ConnectionIp As String
Private m_Command As String
Public Property Port()
Get
Return m_ConnectionPort
End Get
Set(ByVal value)
m_ConnectionPort = value
End Set
End Property
Public Property ip()
Get
Return m_ConnectionIp
End Get
Set(ByVal value)
m_ConnectionIp = value
End Set
End Property
Public Property connect()
Get
tcpc.Connect(m_ConnectionIp, m_ConnectionPort)
strDomain = "<openmsx-control>"
arrDomain = Encoding.ASCII.GetBytes(strDomain.ToCharArray())
Dim s As Stream = tcpc.GetStream()
s.Write(arrDomain, 0, strDomain.Length)
Dim sr As New StreamReader(tcpc.GetStream(), Encoding.ASCII)
While -1 <> sr.Peek()
result = sr.ReadLine()
End While
Return result
End Get
Set(ByVal value)
'
End Set
End Property
Public Property execute(ByVal command As String)
Get
Try
strDomain = "<command>" & command & "</command>" + Chr(13)
arrDomain = Encoding.ASCII.GetBytes(strDomain.ToCharArray())
Dim s As Stream = tcpc.GetStream()
s = tcpc.GetStream()
s.Write(arrDomain, 0, strDomain.Length)
Dim sr2 As New StreamReader(tcpc.GetStream(), Encoding.ASCII)
While -1 <> sr2.Peek()
result = sr2.ReadLine()
End While
Catch e As Exception
Debug.Write("Exception: " & e.Message)
Return "Error::" & e.Message
End Try
Return result
End Get
Set(ByVal value)
'command = m_Command
End Set
End Property
Public Property close()
Get
tcpc.Close()
Return "done"
End Get
Set(ByVal value)
tcpc.Close()
End Set
End Property
End Class |
In mijn main form zet ik als volgt de connectie op
Eerst doe ik een global 'dim connect as new connect()'
code:
1
2
3
4
5
| Dim connection As New Connect()
connection.Port = 9962
connection.ip = "127.0.0.1"
Dim bla = connection.connect()
bla = connection.execute("set scaler hq2xlite") |
als ik echter mijn class sluit met connection.close() dan wordt de verbinding verbroken en het object (connection) getermineerd. (ik wil namelijk naar meer dan 1 IP connecten of naar een andere poort)
Echter bij een reconnect krijg ik een
code:
1
| Cannot access a disposed object.Object name: 'System.Net.Sockets.TcpClient'. |
Hoe kan ik mijn object reactiveren? (of hergebruiken)
[ Voor 4% gewijzigd door Vampier op 27-11-2005 22:02 ]