<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47576.aspx</link><pubDate>Mon, 12 Jan 2009 08:17:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47576</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47576.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47576</wfw:commentRss><description>lol, πράγματι και όχι μόνο αυτό, τέρμα πάνω στο πρώτο post λέω οτι "θέλω να φτιάξω μια εφαρμογή windows forms". lol. Ζητώ συγνώμη για την παρεξήγηση. Παρεπιπτόντως ο κώδικας σου με βοήθησε πάρα πολύ, ευχαριστώ.&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47572.aspx</link><pubDate>Mon, 12 Jan 2009 03:52:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47572</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47572.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47572</wfw:commentRss><description>&lt;P&gt;Μάλλον ξέχασες να πεις ότι δουλεύεις με WPF&lt;/P&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47566.aspx</link><pubDate>Sun, 11 Jan 2009 23:23:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47566</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47566.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47566</wfw:commentRss><description>Διάβασα πολύ καλά τον κώδικα σου αλλά είναι γραμένος για windows forms και όχι για WPF με αποτέλεσμα η μέθοδος σου που καλεί το "this.Invoke(d, new object[])" να μην μου κάνει compile.&lt;br&gt;&lt;br&gt;Προσπάθησα να την μετατρέψω σε WPF χρησιμοποιώντας την αντίστοιχη της Invoke με τον dispatcher αλλά δεν τα κατάφερα. &lt;br&gt;&lt;br&gt;Το έχω φτιάξει να παίζει synchronous (δηλαδή να κλειδώνει το thread tou UI περιμένοντας για UDP πακέτο) και τώρα διαβάζω και προσπαθώ να καταλάβω καλύτερα πως δουλέυει ο dispatcher και τα delegate classes.&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47565.aspx</link><pubDate>Sun, 11 Jan 2009 21:02:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47565</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47565.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47565</wfw:commentRss><description>&lt;P&gt;Τσκ, τσκ, τσκ, δεν διαβάζεις τον κώδικα που σου έγραψα! Αυτό κάνει ήδη η SetTextCallback στον κώδικα που σου έδωσα. Ελέγχει αν βρίσκεται σε διαφορετικό thread με την InvokeRequired η οποία παρέχεται απ' όλα τα controls και αν χρειαστεί καλεί την Invoke με παράμετρο τον ευατό της. H Invoke θα εκτελέσει ξανά την SetTextCallback, στο σωστό thread αυτή τη φορά.&lt;/P&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47564.aspx</link><pubDate>Sun, 11 Jan 2009 20:01:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47564</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47564.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47564</wfw:commentRss><description>απ'ότι διαβάζω επειδή το να ενημερώσω το textbox μου είναι δουλειά άλου thread πρέπει να χρησιμοποιήσω τον Dispatcher για να δουλέψει. Το ερευνώ τώρα. Ευχαριστώ για την βοήθεια anyway.&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47489.aspx</link><pubDate>Thu, 08 Jan 2009 07:48:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47489</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47489.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47489</wfw:commentRss><description>Παναγιώτη ευχαριστώ για τη λεπτομερέστατη εξήγηση και τα σχόλια. Παρ'όλα αυτά επειδή είμαι newbie .net προγραμματιστής μου σκάει το πρόγραμμα όταν στέλνω δεδομένα με έναν test udp client. Συγκεκριμένα σκάει με αυτό το μήνυμα. Τι εννοεί οτι το αντικείμενο αυτό ανοίκει σε διαφορετικό thread? Ο κώδικας μου είναι σε ένα :Window μέσα και ο listener ξεκινάει σε ένα κουμπι. console έχω ονομάσει ένα textbox control που χρησιμοποιώ για να παρουσιάζω διάφορα μηνύματα.&lt;br&gt;&lt;br&gt;&lt;img src="http://bayimg.com/image/namddaabn.jpg"&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;o κώδικας μου βρίσκεται εδω:&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tr style="vertical-align:top;line-height:normal;"&gt;&lt;td style="width:40px;text-align:right;"&gt;&lt;pre style="margin:0px;padding:2px;font-family:courier new;font-size:11px;color:gray;"&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7&lt;br&gt;8&lt;br&gt;9&lt;br&gt;10&lt;br&gt;11&lt;br&gt;12&lt;br&gt;13&lt;br&gt;14&lt;br&gt;15&lt;br&gt;16&lt;br&gt;17&lt;br&gt;18&lt;br&gt;19&lt;br&gt;20&lt;br&gt;21&lt;br&gt;22&lt;br&gt;23&lt;br&gt;24&lt;br&gt;25&lt;br&gt;26&lt;br&gt;27&lt;br&gt;28&lt;br&gt;29&lt;br&gt;30&lt;br&gt;31&lt;br&gt;32&lt;br&gt;33&lt;br&gt;34&lt;br&gt;35&lt;br&gt;36&lt;br&gt;37&lt;br&gt;38&lt;br&gt;39&lt;br&gt;40&lt;br&gt;41&lt;br&gt;42&lt;br&gt;43&lt;br&gt;44&lt;br&gt;45&lt;br&gt;46&lt;br&gt;47&lt;br&gt;48&lt;br&gt;49&lt;br&gt;50&lt;br&gt;51&lt;br&gt;52&lt;br&gt;53&lt;br&gt;54&lt;br&gt;55&lt;br&gt;56&lt;br&gt;57&lt;br&gt;58&lt;br&gt;59&lt;br&gt;60&lt;br&gt;61&lt;br&gt;62&lt;br&gt;63&lt;br&gt;64&lt;br&gt;65&lt;br&gt;66&lt;br&gt;67&lt;br&gt;68&lt;br&gt;69&lt;br&gt;70&lt;br&gt;71&lt;br&gt;72&lt;br&gt;73&lt;br&gt;74&lt;br&gt;75&lt;br&gt;76&lt;br&gt;77&lt;br&gt;78&lt;br&gt;79&lt;br&gt;80&lt;br&gt;81&lt;br&gt; &lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin:0px;padding:2px 2px 2px 8px;"&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Linq;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Text;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Controls;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Data;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Documents;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Input;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Media;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Media.Imaging;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Navigation;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Shapes;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Net.Sockets;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Net;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Windows.Media.Media3D;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; WpfCubeControl;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; System.Drawing;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; Wpf3DApp&lt;br&gt;{&lt;br&gt;    &lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;/// Interaction logic for CubeWin.xaml&lt;/span&gt;&lt;br&gt;    &lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; partial &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; CubeWin : Window&lt;br&gt;    {&lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; UdpState&lt;br&gt;        {&lt;br&gt;            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; UdpClient Client { get; set; }&lt;br&gt;            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; IPEndPoint EndPoint { get; set; }&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        IPEndPoint point &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; IPEndPoint(IPAddress.Loopback, 9091);&lt;br&gt;        UdpClient listener;&lt;br&gt;&lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; CubeWin()&lt;br&gt;        {&lt;br&gt;&lt;br&gt;            InitializeComponent();&lt;br&gt;&lt;br&gt;            cubeControl1.CubeColor &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; System.Windows.Media.Color.FromRgb(255, 70, 0);&lt;br&gt;            cubeControl1.Render();&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; ReceiveCallback(IAsyncResult ar)&lt;br&gt;        {&lt;br&gt;            UdpState s &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; (UdpState)ar.AsyncState;&lt;br&gt;            UdpClient listener &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; s.Client;&lt;br&gt;            IPEndPoint endpoint &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; s.EndPoint;&lt;br&gt;&lt;br&gt;            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (listener.Client !&lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;null&lt;/span&gt;)&lt;br&gt;            {&lt;br&gt;&lt;br&gt;                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;byte&lt;/span&gt;[] message &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; listener.EndReceive(ar, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ref&lt;/span&gt; endpoint);&lt;br&gt;                &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; receiveString &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; Encoding.Unicode.GetString(message);&lt;br&gt;                SetText(receiveString, message.Length);&lt;br&gt;                listener.BeginReceive(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.ReceiveCallback, s);&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;       &lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;delegate&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; SetTextCallback(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; text, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; length);&lt;br&gt;&lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; startbutton_Click(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;br&gt;        {&lt;br&gt;            &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (listener == &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;null&lt;/span&gt;)&lt;br&gt;                listener &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; UdpClient(9091);&lt;br&gt;            UdpState state &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; UdpState { Client &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; listener, EndPoint &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; point };&lt;br&gt;            listener.BeginReceive(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.ReceiveCallback, state);&lt;br&gt;            console.Text += &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Listening for connections on port 9091"&lt;/span&gt;;&lt;br&gt;        }&lt;br&gt;&lt;br&gt;        &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; SetText(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; text, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; length)&lt;br&gt;        {&lt;br&gt;            console.Text += String.Format(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"\r\n{0} - {1} bytes"&lt;/span&gt;, text, length);&lt;br&gt;&lt;br&gt;        }&lt;br&gt;&lt;br&gt;&lt;br&gt;    }&lt;br&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47390.aspx</link><pubDate>Sun, 04 Jan 2009 08:11:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47390</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47390.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47390</wfw:commentRss><description>&lt;P&gt;H UdpClient δεν έχει κάποιο πρόβλημα, αντίθετα απ' όσα λέει το thread του 2002 το οποίο παραθέτει ο mixio. Το UdpClient είναι ένα helper class το οποίο διευκολύνει τη χρήση UDP sockets. Χρησιμοποιώντας το χρησιμοποιείς ήδη sockets. Δεν υπάρχει λόγος να αποφύγεις την UdpClient απλά και μόνο επειδή θέλεις να χρησιμοποιήσεις sockets.&lt;/P&gt;
&lt;P&gt;Όσον αφορά το πότε πρέπει να καλέσεις τί και που, έφτιαξα στα πολύ γρήγορα ένα πρόγραμμα το οποίο στέλνει UDP πακέτα στην 9091 και τα λαμβάνει ασύγχρονα. Για να το δοκιμάσεις θα πρέπει να το τρέξεις δύο φορές και στο ένα instance να πατήσεις start, στο άλλο να γράψεις ένα μήνυμα και να πατήσεις send. Χρησιμοποιούνται δύο UdpClients. Ο ένας είναι πεδίο της φόρμας αλλά δημιουργείται όταν πατάς το start. Μετά, με την κλήση της BeginReceive περιμένει ένα πακέτο. Όταν το λάβει το εμφανίζει και αρχίζει να ξανακούει. Ο άλλος δημιουργείται μόνο για να σταλεί ένα μήνυμα και μετά καταστρέφεται.&lt;/P&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Text;&lt;BR&gt;using System.Windows.Forms;&lt;BR&gt;using System.Net.Sockets;&lt;BR&gt;using System.Net;&lt;/P&gt;
&lt;P&gt;namespace UdpChat&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class ChatForm : Form&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Η κλάση UdpState χρησιμοποιείται για να περάσουμε στην BeginReceive&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// στοιχεία για το ποιός την καλεί&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class UdpState&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Ποιός είναι ο UdpClient ο οποίος δέχτηκε δεδομένα?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Μπορεί η ίδια μέθοδος να χρησιμοποιείται από πολλούς UdpClients, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// οπότε πρέπει να ξεχωρίσουμε για ποιόν είναι τα δεδομένα&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public UdpClient Client{get;set;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Από ποιά διεύθυνση τα δέχθηκε? &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IPEndPoint EndPoint { get; set; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Για συντομία, δουλεύουμε με το 127.0.0.1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPEndPoint point = new IPEndPoint(IPAddress.Loopback, 9091);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Ο listener θα δημιουργηθεί μόνο όταν πατηθεί το start&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UdpClient listener;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ChatForm()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void startButton_Click(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Δημιουργούμε το listener πάνω στο port 9091 αλλά δεν περιορίζουμε&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // τη διεύθυνση στην οποία ακούει&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (listener==null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener = new UdpClient(9091);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UdpState state=new UdpState{Client=listener,EndPoint=point};&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Αρχίζουμε να ακούμε&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener.BeginReceive(this.ReceiveCallback,state);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Text = "Udp Chat - Listening";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void stopButton_Click(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Κλείνουμε το listener. Αν έχουμε καλέσει την BeginReceive, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // αυτό θα προκαλέσει μία κλήση στη ReceiveCallback&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (listener != null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener = null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Text = "Udp Chat";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void sendButton_Click(object sender, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Δημιουργούμε ένα νέο UdpClient για την αποστολή&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (UdpClient client = new UdpClient())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Συνδεόμαστε στον προορισμό&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.Connect(IPAddress.Loopback, 9091);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Μετατρέπουμε το μήνυμα σε bytes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] message = Encoding.Unicode.GetBytes(messageBox.Text);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Το στέλνουμε σύγχρονα&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.Send(message, message.Length);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Κλείνουμε τον UdpClient&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; messageBox.Text = String.Empty;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Καλείται όταν λαμβάνονται νέα δεδομένα&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="ar"&amp;gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void ReceiveCallback(IAsyncResult ar)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Ποιός μας έστειλε δεδομένα?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UdpState s = (UdpState)ar.AsyncState;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UdpClient listener = s.Client;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPEndPoint endpoint = s.EndPoint;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Αν η κλήση οφείλεται στο Close, ο UdpClient.Client θα είναι null.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Διαφορετικά έχουμε νέα δεδομένα και μπορούμε να τα παραλάβουμε&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (listener.Client != null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Διαβάζουμε τα bytes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] message = listener.EndReceive(ar, ref endpoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Τα μετατρέπουμε σε string&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string receiveString = Encoding.Unicode.GetString(message);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Προσθέτουμε το κείμενο στο discussionBox&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetText(receiveString, message.Length);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Ξανακούμε για νέα δεδομένα&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener.BeginReceive(this.ReceiveCallback, s);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate void SetTextCallback(string text, int length);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Η ReceiveCallback εκτελείται σε διαφορετικό thread από τη φόρμα. Γι αυτό &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// πρέπει η κλήση της SetText να μεταφερθεί από το thread της ReceiveCallback &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// σε αυτό του thread. Αυτό γίνεται μέσω της Invoke&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="text"&amp;gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="length"&amp;gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void SetText(string text, int length)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.discussionBox.InvokeRequired)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetTextCallback d = new SetTextCallback(SetText);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Invoke(d, new object[] { text, length });&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; discussionBox.Text += String.Format("\r\n{0} - {1} bytes", text, length);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47245.aspx</link><pubDate>Mon, 29 Dec 2008 07:12:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47245</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47245.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47245</wfw:commentRss><description>&lt;P&gt;Μπορείς να κάνεις κάτι πολύ απλό: Να φτιάξεις event handlers για όλα τα events που σε ενδιαφέρουν και να βάλεις μέσα στο κάθε ένα από αυτά ένα Debug.Writeline που να εμφανίζει το όνομα του event. Μόλις τρέξει η εφαρμογή θα δεις στο Debug window όλα τα ονόματα των events με τη σειρά που έγιναν trigger.&lt;/P&gt;
&lt;P&gt;Πάντως, τυπικά, υπάρχουν δύο σημεία που μπορείς να βάλεις τον κώδικα σου&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Στον constructor της φόρμας, μετά την κλήση στο InitializeComponent&lt;/LI&gt;
&lt;LI&gt;Στο FormLoad event&lt;/LI&gt;&lt;/UL&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47238.aspx</link><pubDate>Mon, 29 Dec 2008 02:24:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47238</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47238.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47238</wfw:commentRss><description>ξέρει κανείς κάποιο καλό βιβλίο να διαβάσω να μάθω για sockets σε C# ή κάποιο καλό online tutorial διότι όσο κι αν προσπαθώ μέ διάφορα online tutorials που έχω βρεί, ΔΕ μπορώ να καταλάβω πως λειτουργεί το πράγμα και να φανταστείτε οτι σε java έχω φτιάξει sockets app.&lt;br&gt;&lt;br&gt;Βασικά δε μπορώ να βρώ ΠΩΣ λειτουργεί μια windows forms εφαρμογή. Δε μπορώ δηλαδή να καταλάβω με ποιά σειρά γίνονται initialize τα components και που πρέπει εγώ να βάλω τον κώδικα μου για να παίξει σωστά αφού έχουν φορτωθεί τα controls κτλ. Υπάρχει κάποιο έγγραφο online που να εξηγεί πως λειτουργεί μια .net εφαρμογή απόγονος της : Window ή : Form ?&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47183.aspx</link><pubDate>Sat, 27 Dec 2008 20:52:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47183</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47183.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47183</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Jubei:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Φίλε Mixio&lt;br&gt;&lt;br&gt;Σε ευχαριστώ πολύ για τις χρήσιμες συμβουλές. Θα δοκιμάσω κι εγώ με sockets. Κάτι άλλο που ήθελα να ρωτήσω είναι, πως μπορώ να τεστάρω την εφαρμογή που ακούει για τα udp πακέτα πριν φτιάξω τον client. Υπάρχει κάποιος εύκολος/γρήγορος τρόπος για να τεστάρω;&lt;br&gt;&lt;br&gt;ευχαριστώ εκ των προτέρων,&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Δεν νομιζω να υπαρχει κατι πιο γρηγορο απο το να γραψεις αυτες τις λιγοστες σειρες κωδικα που σου εδωσα και να τρεξεις το προγραμματακι σου.&lt;br&gt;Επισης αν η προηγουμενη απαντηση μου ειναι και η λυση στο προβλημα σου, υπαρχει ενα κουμπακι "Σημειωση ως απαντηση" σε καθε post το οποιο οταν το πατας&amp;nbsp; δινει στο thread την ενδειξη οτι εχει επιλυθει. Αυτο βοηθαει στους νεους που διαβαζουν κατι, να ειναι σιγουροι οτι αυτο που διαβαζουν εχει λειτουργησει πρακτικα.&amp;nbsp; &lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47181.aspx</link><pubDate>Sat, 27 Dec 2008 20:20:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47181</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47181.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47181</wfw:commentRss><description>Φίλε Mixio&lt;br&gt;&lt;br&gt;Σε ευχαριστώ πολύ για τις χρήσιμες συμβουλές. Θα δοκιμάσω κι εγώ με sockets. Κάτι άλλο που ήθελα να ρωτήσω είναι, πως μπορώ να τεστάρω την εφαρμογή που ακούει για τα udp πακέτα πριν φτιάξω τον client. Υπάρχει κάποιος εύκολος/γρήγορος τρόπος για να τεστάρω;&lt;br&gt;&lt;br&gt;ευχαριστώ εκ των προτέρων,&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item><item><title>Απ: UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47175.aspx</link><pubDate>Sat, 27 Dec 2008 07:35:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47175</guid><dc:creator>mixio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47175.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47175</wfw:commentRss><description>Γεια σου jubei.&lt;br&gt;&lt;br&gt;Προσφατα χρησιμοποιουσα udpclient για τον ιδιο λογο με σενα. &lt;br&gt;Ωστοσο αυτη η κλαση εχει καποια πολυ σημαντικα drawbacks που αναφερονται &lt;a href="http://www.codeproject.com/KB/bugs/udpclientbug.aspx"&gt;εδω&lt;/a&gt;.&lt;br&gt;Θα σου δωσω τον κωδικα που χρησιμοποιουσα και 'γω.&lt;br&gt;&lt;br&gt;// Ακους τοπικα στην εν λογω πορτα.&lt;br&gt;UdpClient client = new UdpClient(ListenPort); &lt;br&gt;&lt;br&gt;// Εδω περνας τα στοιχεια αυτου που 8α σε στελνει τις 3 τιμες.&lt;br&gt;IPEndPoint remoteEP = new IPEndPoint(ServerIP, ServerPort); &lt;br&gt;&lt;br&gt;// Αν θες να του στειλεις κατι.. Αυτο που στελνεις θα ειναι ενας byte array.&lt;br&gt;byte[] b = new byte[10];&lt;br&gt;client.Send(b, b.length, remoteEP); &lt;br&gt;&lt;br&gt;//  Ετσι θα λαμβανεις δεδομενα απο τον server. Στον received θα αποθηκευοντα αυτα που ελαβες.&lt;br&gt;byte[] received = client.Receive(ref remoteEP);&lt;br&gt;&lt;br&gt;&lt;br&gt;Αφου διαβασεις τα προβληματα αυτης της κλασης θα σου ελεγα καλυτερα να χρησιμοποιησεις sockets.&lt;br&gt;Σου δινω και αυτον τον κωδικα που αντικαθιστα τον προηγουμενο.&lt;br&gt;&lt;br&gt;// Ακους τοπικα στην εν λογω πορτα.  Του βαζεις και ενα receive timeout πχ. 10000ms&lt;br&gt;IPEndPoint localEP = new IPEndPoint(IPAddress.Any, ListenPort);&lt;br&gt;Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);&lt;br&gt;Listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000);&lt;br&gt;Listener.Bind(localEP);&lt;br&gt;&lt;br&gt;// Εδω περνας τα στοιχεια αυτου που 8α σε στελνει τις 3 τιμες.&lt;br&gt; EndPoint remoteEP = (EndPoint)(new IPEndPoint(ServerIP, ServerPort));&lt;br&gt;&lt;br&gt;// Στειλε ενα byte array&lt;br&gt;byte[] b = new byte[10];&lt;br&gt;int BytesSend = Listener.SendTo(b, remoteEP);&lt;br&gt;&lt;br&gt;// Οτι λαβεις περασε το στο buffer array &lt;br&gt;byte[] buffer = new byte[64 * 1024];&lt;br&gt;int BytesReceived = Listener.ReceiveFrom(buffer, ref remoteEP);&lt;br&gt;&lt;br&gt;Μολις λαβει κατι το αποθηκευει στο buffer. &lt;br&gt;Οσο δεν λαμβανει κατι, το προγραμμα μπλοκαρει εκει. Aν σε 10000ms δε παρει κατι ριχνει SocketException.&lt;br&gt;Δε χρειαζεσαι τον handler πιστευω.&lt;br&gt;&lt;br&gt;</description></item><item><title>UDP receive</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/47167.aspx</link><pubDate>Sat, 27 Dec 2008 01:00:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:47167</guid><dc:creator>Jubei</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/47167.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=47167</wfw:commentRss><description>Χαίρετε,&lt;br&gt;&lt;br&gt;Είμαι νέος .net/c# προγραμματιστής και θέλω να φτιάξω μια εφαρμογή windows forms η οποία ακούει σε UDP για 3 τιμές τύπου float/double και όταν λάβει κάτι καλεί έναν event handler και ανταποκρίνεται στο γεγονός (πχ. παίρνει τις τιμές αυτές και τις παρουσιάζει σε ένα textbox). Προσπάθησα έτσι πολύ πρόχειρα να χρησιμοποιήσω την UdpClient αλλά δε μπορώ να καταλάβω πως δουλεύει.&lt;br&gt;&lt;br&gt;οποιαδήποτε βοήθεια θα ήταν ευπρόσεκτη.&lt;br&gt;&lt;br&gt;Ευχαριστώ εκ των προτέρων&lt;br&gt;&lt;br&gt;Jubei&lt;br&gt;</description></item></channel></rss>