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();
}
}
}
========================
演示效果: