首先要使用以下兩個命名空間

using System.Net;
using System.Net.Sockets;

發送端程式碼如下:

IPEndPoint remoteIP = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 1688); //可自行定義廣播區域跟Port
Socket Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //定義發送的格式及有效區域
Server.EnableBroadcast = true;
Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);

byte[] pushdata = new byte[1024]; //定義要送出的封包大小

while (true)
{
	pushdata = Encoding.UTF8.GetBytes("asdasd"); //把要送出的資料轉成byte型態
	Server.SendTo(pushdata, remoteIP); //送出的資料跟目的
	Thread.Sleep(1000); //每秒發送一次
}

接收端程式碼如下:

IPEndPoint IPEnd = new IPEndPoint(IPAddress.Any, 1688);
Socket Client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Client.Bind(IPEnd);
EndPoint IP = (EndPoint)IPEnd; //我真的不知道為何一定要這行才能成功= =,誰能解釋一下
byte[] getdata = new byte[1024]; //要接收的封包大小
string input;
int recv;

while(true)
{
	recv = Client.ReceiveFrom(getdata, ref IP); //把接收的封包放進getdata且傳回大小存入recv
	input = Encoding.UTF8.GetString(getdata, 0, recv); //把接收的byte資料轉回string型態
	Console.WriteLine("received: {0} from: {1}", input, IP.ToString());
}
arrow
arrow
    全站熱搜

    AwEi 發表在 痞客邦 留言(3) 人氣()