Ho un modulo che crea un oggetto UDP, nella classe UDP viene creato un UDPClient e i dati ricevuti vengono eseguiti nel metodo BeginReceive utilizzando EndReceive.Impossibile aggiungere alla stringa ricevuta nel listener UDP C#
Quando stampo la stringa dei dati ricevuti, dopo aver convertito il byte [], nella console dal metodo beginreceive, con il testo aggiunto, solo i dati ricevuti non stampano il testo aggiunto.
Quindi sembra che i dati ricevuti siano incompleti.
Quando la stringa viene stampata, la NewLine e l'aggiunta "completata" non vengono visualizzate.
Qualsiasi aiuto sarebbe fantastico !!
Grazie
class Udp
{
public EventHandler _dataReceived;
public Udp()
{
int receiverPort = 1248;
UdpClient receiver = new UdpClient(receiverPort);
string discovery = "<?xml version=\"1.0\"?><ServiceQuery></ServiceQuery>";
receiver.BeginReceive(new AsyncCallback(DataReceived), receiver);
IPEndPoint end = new IPEndPoint(IPAddress.Broadcast, 1248);
receiver.Send(Encoding.ASCII.GetBytes(discovery + "\0"), discovery.Length + 1, end);
}
private void DataReceived(IAsyncResult ar)
{
UdpClient c = (UdpClient)ar.AsyncState;
IPEndPoint receivedIpEndPoint = new IPEndPoint(IPAddress.Any, 1248);
Byte[] receivedBytes = c.EndReceive(ar, ref receivedIpEndPoint);
string receivedText = ASCIIEncoding.ASCII.GetString(receivedBytes);
Console.WriteLine("\n");
if(_dataReceived != null)
{
Console.Write(receivedIpEndPoint + ": " + receivedText + Environment.NewLine + "done");
_dataReceived(receivedText, new EventArgs());
}
c.BeginReceive(new AsyncCallback(DataReceived), c);
}
}
almeno un campione banale con il codice sorgente necessario. – Jichao
Ho modificato qualche codice sorgente, come ho detto sopra. Newline e "done" non vengono stampati –
Hai provato a utilizzare la classe Stringbuilder anziché la stringa? –