服務(wù)器
namespace Udp服務(wù)器
{
class Program
{
static void Main(string[] args)
{
開(kāi)始監(jiān)聽(tīng)();
Console.ReadLine();
}
static void 開(kāi)始監(jiān)聽(tīng)()
{
UdpClient udpServer = new UdpClient(6666);
IPEndPoint ip終端 = null;
try
{
while(true)
{
Console.WriteLine("等待接受...");
byte[] 獲取字節(jié)s = udpServer.Receive(ref ip終端);//接受數(shù)據(jù).ref接受的是發(fā)送端的ip以及端口
Console.WriteLine("ip終端:" + ip終端.ToString());//自身的
string 獲取str = Encoding.Unicode.GetString(獲取字節(jié)s, 0, 獲取字節(jié)s.Length);
Console.WriteLine("接受到信息:{0}", 獲取str);
//收到消息"quit"時(shí),跳出循環(huán)
if (獲取str == "quit") break;
//想客戶端會(huì)送消息
string sendString = "你好. 服務(wù)端";
Console.WriteLine("發(fā)送信息{0}" , sendString);
byte[] sendBytes = Encoding.Unicode.GetBytes(sendString);
udpServer.Send(sendBytes, sendBytes.Length, "127.0.0.1", 7777);//目標(biāo)ip和端口
}
udpServer.Close();
Console.WriteLine("對(duì)方已經(jīng)退出,按回車(chē)結(jié)束");
}
catch(Exception a)
{
Console.WriteLine(a.ToString());
}
}
}
}
客戶端
namespace Udp客戶端
{
class Program
{
static void Main(string[] args)
{
string 發(fā)送str = "我是客戶端1";
Send(發(fā)送str);
Send("quit");
Console.ReadLine();
}
static void Send(string 消息)
{
UdpClient udpClient = new UdpClient(7777);
try
{
Console.WriteLine("想服務(wù)器發(fā)送數(shù)據(jù):{0}", 消息);
byte[] 發(fā)送字節(jié)s = System.Text.Encoding.Unicode.GetBytes(消息);
udpClient.Send(發(fā)送字節(jié)s, 發(fā)送字節(jié)s.Length, "127.0.0.1", 6666);
if(消息=="quit")
{
Console.WriteLine("已經(jīng)向?qū)Ψ桨l(fā)送quit信息, 請(qǐng)按回車(chē)鍵退出程序.");
return;
}
IPEndPoint 終端 = null;
byte[] 接受bytes = udpClient.Receive(ref 終端);//接受任意來(lái)自u(píng)dpClient的艦艇的端口.就是創(chuàng)建的7777
Console.WriteLine("終端:" + 終端.ToString());//終端是自身的
string 獲取str = System.Text.Encoding.Unicode.GetString(接受bytes);
Console.WriteLine("接受信息:{0}", 獲取str);
udpClient.Close();
}
catch(Exception a)
{
Console.WriteLine(a.ToString());
}
}
}
}
發(fā)送廣播信息和接受廣播信息
namespace 廣播程序設(shè)計(jì)實(shí)例
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//IPEndPoint ip終端 = new IPEndPoint(IPAddress.Broadcast, 8000);//廣播.//255.255.255.255:8000
IPEndPoint ip終端 = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000);//廣播
MessageBox.Show(ip終端.ToString());
//設(shè)置Broadcast值為表示允許套接字發(fā)送廣播信息,改值默認(rèn)為 不允許.
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
byte[] 發(fā)送bytes = System.Text.Encoding.Unicode.GetBytes(textBox1.Text);
//向子網(wǎng)發(fā)送信息
socket.SendTo(發(fā)送bytes, ip終端);
socket.Close();
}
}
}
namespace 接受廣播
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ip終端 = new IPEndPoint(IPAddress.Any, 8000);//any是0.0.0.0 接受任意ip發(fā)送的8000端口消息
MessageBox.Show(ip終端.ToString());
socket.Bind(ip終端);
EndPoint ep = (EndPoint)ip終端;
byte[] getBytes = new byte[1024];
while(true)
{
socket.ReceiveFrom(getBytes, ref ep);//接受到信息.并保存
string getData = System.Text.Encoding.Unicode.GetString(getBytes);
//注意不能勝率getData.TrimEnd'\u0000' 否則看不到后面信息
getData = getData.TrimEnd('\u0000') + "\n\n希望繼續(xù)接受此類(lèi)消息嗎?\n";
MessageBox.Show(getData);
string message = "來(lái)自" + ep.ToString() + "的消息";//ep的端口是接受端口(隨機(jī)數(shù),不是8000)
MessageBox.Show(message);
break;
}
}
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。