Ik heb een probleem met het opzetten van een netwerkverbinding tussen 2 computers. (een server en client) Ik heb een applicatie die communiceert met een andere applicatie die ik allebei heb geschreven. Om dit voor elkaar te krijgen heb ik me verdiept in dit onderwerp op sites als : www.c-sharpcorner.com.
De verbinding die komt goed tot stand. De berichten die ik stuur komen ook aan. Maar na een tijd draaien worden de berichten niet meer ontvangen/verzonden. Als ik vervolgens met het commando netstat in het dos-console kijk heb ik meer dan 2 schermen vol aan connecties staan. Ik heb al geprobeerd om de code zo aan te passen dat er maar 1 connectie wordt aan gemaakt. Om dit voor elkaar te krijgen heb ik geprobeer om bij het zenden maar 1x te connecten naar een Endpoint. Tevens heb ik geprobeerd om de TcpClient globaal te declareren.
Heeft iemand een idee wat er mis gaat in mijn code: (zowel server als client gebruiken deze code)
Dit stuk code draait in een apparte thread die deze functie laat herhalen. (myList is globaal gedeclareerd van het type TcpListener)
De verbinding die komt goed tot stand. De berichten die ik stuur komen ook aan. Maar na een tijd draaien worden de berichten niet meer ontvangen/verzonden. Als ik vervolgens met het commando netstat in het dos-console kijk heb ik meer dan 2 schermen vol aan connecties staan. Ik heb al geprobeerd om de code zo aan te passen dat er maar 1 connectie wordt aan gemaakt. Om dit voor elkaar te krijgen heb ik geprobeer om bij het zenden maar 1x te connecten naar een Endpoint. Tevens heb ik geprobeerd om de TcpClient globaal te declareren.
Heeft iemand een idee wat er mis gaat in mijn code: (zowel server als client gebruiken deze code)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| private void Send(String _sendMessage, IPAddress theIPAddress)
{
try
{
TcpClient _tcpClient = new TcpClient();
_tcpClient.Connect( theIPAddress ,listenPort1);
Stream _stream1 = _tcpClient.GetStream();
ASCIIEncoding _asen = new ASCIIEncoding();
byte[] _bytes = _asen.GetBytes( _sendMessage );
_stream1.Write(_bytes, 0, _bytes.Length);
_tcpClient.Close();
}
catch{}
} |
Dit stuk code draait in een apparte thread die deze functie laat herhalen. (myList is globaal gedeclareerd van het type TcpListener)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| private void Receive()
{
myList = new TcpListener(theLocalIPAddress ,receivePort1);
myList.Start();
Socket _socket1 = myList.AcceptSocket();
byte[] _bytes = new byte[1024];
int _rc = _socket1.Receive( _bytes );
string _temp = "";
for (int i = 0; i < _rc; i++ )
{
_temp += Convert.ToChar( _bytes[i] );
}
SplitMessage( _temp );
_socket1.Close();
myList.Stop();
} |