Nicht-Blockierung von UDP-Client-Erhalten-Thread-Safe Call

Bin ich auf der Suche nach einer Lösung für dieses problem, für das Alter. Ich habe versucht, viele Dinge, einschließlich BeginReceive(), aber alles ohne Erfolg. Es muss ein Weg, um dies zu tun, stellen Sie ein UDP-Client receive-Aufruf ist nicht blockierend UND thread-safe. Ich bin versucht, eine Nachricht erhalten, und schreiben Sie es auf ein Rich-Text-Feld.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;

namespace Chat
{
    public partial class Form1 : Form
    {
        public bool contfunctioning = true; public bool changedsplay = false;
        public string enteredchats, msg, chatstring, Chats;

        UdpClient subscriber = new UdpClient(8899);
        UdpClient publisher = new UdpClient("230.0.0.100", 8898);


        public Form1()
        {
            InitializeComponent();
        }


        private void btnConnect_Click(object sender, EventArgs e)
        {

            string ConnectIPAddress;
            ConnectIPAddress = txtboxIP.Text;
            IPAddress addr = IPAddress.Parse(ConnectIPAddress);

            MessageBox.Show("Subscribing to chat server on " + ConnectIPAddress + ".", ConnectIPAddress);

            EndPoint ep = null;

            //This is where The UDPClient subscriber needs to Begin.Receive()


        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            enteredchats = txtboxUsr.Text + " " + txtboxentertxt.Text;
            txtboxentertxt.Clear();

            msg = String.Format(enteredchats);
            sdata = Encoding.ASCII.GetBytes(msg);
            publisher.Send(sdata, sdata.Length);
        }

    }
}

Genug code, ja?
Vielen Dank im Voraus für alle Antworten.

  • Wie haben Sie versucht BeginReceive? Es ist thread-safe, wenn Sie es richtig zu verwenden.
  • Welches problem haben Sie genau? Mit BeginReceive perfekt funktionieren würde hier.
  • Liegt es an mir oder funktioniert der Codeausschnitt enthalten BeginReceive irgendwo?
  • Es enthält nicht BeginReceive(), wie ich bereits in meiner Frage, ich habe es versucht und es hat nicht funktioniert. Die tutorials die ich gefunden habe waren nicht sehr beschreibend, wenn jemand mir zeigen könnte, in eine Antwort, wie es in diesem Fall, dass würde sehr geschätzt werden.
InformationsquelleAutor Bloodyaugust | 2010-01-18
Schreibe einen Kommentar