Wpis z mikrobloga

Mireczki obeznane w #csharp mam problem. Napisałem aplikację, która nasłuchuje po TCP wiadomości od klienta. Wszystko fajnie przyjmuje ale tylko raz. Kiedy wyślę drugą wiadomość to już nie odbiera jej. Musze zresetować aplikację i wtedy przyjmie zaległą wiadomość. Da się jakoś zresetować to automatycznie tak, żeby ciągle był nasłuch?

Tu fragment kodu odpowiedzialny za to:

int Port = int.Parse(port);
var address = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0];
var endPoint = new IPEndPoint(address, Port);
String data = "";
var listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(endPoint);
listener.Listen(3);
while (true)
{

byte[] buffer = new byte[409600];
// handle incoming connection ...
var handler = listener.Accept();
while (true)
{
int count = handler.Receive(buffer);
data += Encoding.UTF8.GetString(buffer, 0, count);

int start = data.IndexOf((char)0x0B);
if (start >= 0)
{

int end = data.IndexOf((char)0x1C);
if (end > start)
{
string temp = data.Substring(start + 1, end - start);

// handle message

string response = HandleMessage(temp, Path);

// Send response
var rsp = Encoding.UTF8.GetBytes(response);
handler.Send(rsp);
// close connection
handler.Shutdown(SocketShutdown.Both);
handler.Close();
break;
}
}
}
}

#pytanie #programowanie #informatyka
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach