C# 實現簡單的UDP

UDP和TCP不同

UDP可以比喻爲現實中的寫信(當然不是email)

TCP可以比喻爲顯示中的打電話。

 

TCP可以保持連接,因此可以通過連接來發發消息

UDP不能保持連接,因此沒有發送消息和接收消息都要加上對方地址

 

TCP的服務端和客戶端很不同,服務端用TcpListner,客戶端用TcpClient。

UDP的服務端和客戶端很像,都用UDPClient.  UDP的客戶端和服務端都需要監聽、回答

 

 

示例代碼:

===================

服務端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;


namespace QTCPServer1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("服務端開始。。。");
           
            UdpClient server = new UdpClient(51889);//A監聽9
            IPEndPoint dummy = null;

            bool loop = true;
            while (loop)
            {
                byte[] response = server.Receive(ref dummy);
              
                byte[] request = null;
                string s = Encoding.UTF8.GetString(response);
                if (s == "Q")
                {
                    request=Encoding.UTF8.GetBytes("OVER".ToCharArray());
                    server.Send(request, request.Length,dummy);//寫入8
                    Console.WriteLine("結束服務");
                    break;
                }
                else
                {
                    Console.WriteLine("收到:"+s);

                    request = Encoding.UTF8.GetBytes("這是一個迴應".ToCharArray());
                  
                    server.Send(request, request.Length, dummy);
                }
            }

            server.Close();
            Console.WriteLine("服務退出");
            Console.ReadLine();

        }
    }
}

 

 

 

========================

客戶端

==========================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Net;

namespace QTCPClient
{
    class Program
    {
      
        static void Main(string[] args)
        {
            Console.WriteLine("客戶端啓動。。。。");
            UdpClient client = new UdpClient(51888);//B監聽8
            while (true)
            {
                Console.Write("請寫入一段話,Q退出:");
                string s = Console.ReadLine();
                byte[] request = Encoding.UTF8.GetBytes(s.ToCharArray());
                client.Send(request, request.Length, "127.0.0.1", 51889);//寫入9

                IPEndPoint dummy = null;
                byte[] response = client.Receive(ref dummy);
                string sRes = Encoding.UTF8.GetString(response);
                if (sRes != "OVER")
                {
                    Console.WriteLine(sRes);
                }
                else
                {
                    Console.WriteLine("收到OVER");
                    break;
                }

               
               
            }

          
            client.Close();
            Console.WriteLine("breaked");
            Console.ReadLine();

           
        }
    }
}
========================

 

演示效果:

UDP示例

發佈了161 篇原創文章 · 獲贊 11 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章