C# 通过socket实现UDP 通信
生活随笔
收集整理的這篇文章主要介紹了
C# 通过socket实现UDP 通信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????
本文章已收錄于:
?????
using?System;?? using?System.Collections.Generic;?? using?System.Linq;?? using?System.Text;?? using?System.Threading.Tasks;?? using?System.Net.Sockets;?? using?System.Net;?? using?System.Threading;?? namespace?UDP_Server?? {?? ????class?Program?? ????{?? ????????static?Socket?server;?? ????????static?void?Main(string[]?args)?? ????????{?? ????????????server?=?new?Socket(AddressFamily.InterNetwork,?SocketType.Dgram,?ProtocolType.Udp);?? ????????????server.Bind(new?IPEndPoint(IPAddress.Parse("169.254.202.67"),?6001));//綁定端口號和IP?? ????????????Console.WriteLine("服務端已經開啟");?? ????????????Thread?t?=?new?Thread(ReciveMsg);//開啟接收消息線程?? ????????????t.Start();?? ????????????Thread?t2?=?new?Thread(sendMsg);//開啟發送消息線程?? ????????????t2.Start();?? ?? ?? ????????}?? ????????///?<summary>?? ????????///?向特定ip的主機的端口發送數據報?? ????????///?</summary>?? ????????static?void?sendMsg()?? ????????{?? ????????????EndPoint?point?=?new?IPEndPoint(IPAddress.Parse("169.254.202.67"),?6000);?? ????????????while?(true)?? ????????????{?? ????????????????string?msg?=?Console.ReadLine();?? ????????????????server.SendTo(Encoding.UTF8.GetBytes(msg),?point);?? ????????????}?? ?? ?? ????????}?? ????????///?<summary>?? ????????///?接收發送給本機ip對應端口號的數據報?? ????????///?</summary>?? ????????static?void?ReciveMsg()?? ????????{?? ????????????while?(true)?? ????????????{?? ????????????????EndPoint?point?=?new?IPEndPoint(IPAddress.Any,?0);//用來保存發送方的ip和端口號?? ????????????????byte[]?buffer?=?new?byte[1024];?? ????????????????int?length?=?server.ReceiveFrom(buffer,?ref?point);//接收數據報?? ????????????????string?message?=?Encoding.UTF8.GetString(buffer,0,length);?? ????????????????Console.WriteLine(point.ToString()+?message);?? ?? ????????????}?? ????????}?? ?? ?? ????}?? }?? using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace UDP_Server
{class Program{static Socket server;static void Main(string[] args){server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);server.Bind(new IPEndPoint(IPAddress.Parse("169.254.202.67"), 6001));//綁定端口號和IPConsole.WriteLine("服務端已經開啟");Thread t = new Thread(ReciveMsg);//開啟接收消息線程t.Start();Thread t2 = new Thread(sendMsg);//開啟發送消息線程t2.Start();}/// <summary>/// 向特定ip的主機的端口發送數據報/// </summary>static void sendMsg(){EndPoint point = new IPEndPoint(IPAddress.Parse("169.254.202.67"), 6000);while (true){string msg = Console.ReadLine();server.SendTo(Encoding.UTF8.GetBytes(msg), point);}}/// <summary>/// 接收發送給本機ip對應端口號的數據報/// </summary>static void ReciveMsg(){while (true){EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用來保存發送方的ip和端口號byte[] buffer = new byte[1024];int length = server.ReceiveFrom(buffer, ref point);//接收數據報string message = Encoding.UTF8.GetString(buffer,0,length);Console.WriteLine(point.ToString()+ message);}}}
} using?System;?? using?System.Collections.Generic;?? using?System.Linq;?? using?System.Text;?? using?System.Threading.Tasks;?? using?System.Net;?? using?System.Net.Sockets;?? using?System.Threading;?? namespace?UDP_client?? {?? ????class?Program?? ????{?? ????????static?Socket?client;?? ????????static?void?Main(string[]?args)?? ????????{?? ????????????client?=?new?Socket(AddressFamily.InterNetwork,?SocketType.Dgram,?ProtocolType.Udp);?? ????????????client.Bind(new?IPEndPoint(IPAddress.Parse("169.254.202.67"),?6000));?? ????????????Thread?t?=?new?Thread(sendMsg);?? ????????????t.Start();?? ????????????Thread?t2?=?new?Thread(ReciveMsg);?? ????????????t2.Start();?? ????????????Console.WriteLine("客戶端已經開啟");?? ????????}?? ????????///?<summary>?? ????????///?向特定ip的主機的端口發送數據報?? ????????///?</summary>?? ????????static?void?sendMsg()?? ????????{?? ????????????EndPoint?point?=?new?IPEndPoint(IPAddress.Parse("169.254.202.67"),?6001);?? ????????????while(true){?? ????????????????string?msg?=?Console.ReadLine();?? ????????????????client.SendTo(Encoding.UTF8.GetBytes(msg),?point);?? ????????????}?? ?? ?? ????????}?? ?? ????????///?<summary>?? ????????///?接收發送給本機ip對應端口號的數據報?? ????????///?</summary>?? ????????static?void?ReciveMsg()?? ????????{?? ????????????while?(true)?? ????????????{?? ????????????????EndPoint?point?=?new?IPEndPoint(IPAddress.Any,?0);//用來保存發送方的ip和端口號?? ????????????????byte[]?buffer?=?new?byte[1024];?? ????????????????int?length?=?client.ReceiveFrom(buffer,?ref?point);//接收數據報?? ????????????????string?message?=?Encoding.UTF8.GetString(buffer,?0,?length);?? ????????????????Console.WriteLine(point.ToString()?+?message);?? ????????????}?? ????????}?? ?? ????}?? }?? using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace UDP_client
{class Program{static Socket client;static void Main(string[] args){client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);client.Bind(new IPEndPoint(IPAddress.Parse("169.254.202.67"), 6000));Thread t = new Thread(sendMsg);t.Start();Thread t2 = new Thread(ReciveMsg);t2.Start();Console.WriteLine("客戶端已經開啟");}/// <summary>/// 向特定ip的主機的端口發送數據報/// </summary>static void sendMsg(){EndPoint point = new IPEndPoint(IPAddress.Parse("169.254.202.67"), 6001);while(true){string msg = Console.ReadLine();client.SendTo(Encoding.UTF8.GetBytes(msg), point);}}/// <summary>/// 接收發送給本機ip對應端口號的數據報/// </summary>static void ReciveMsg(){while (true){EndPoint point = new IPEndPoint(IPAddress.Any, 0);//用來保存發送方的ip和端口號byte[] buffer = new byte[1024];int length = client.ReceiveFrom(buffer, ref point);//接收數據報string message = Encoding.UTF8.GetString(buffer, 0, length);Console.WriteLine(point.ToString() + message);}}}
}
接下來我們通過一個簡單的程序看一下UDP通信的過程。
服務端程序:
?
客戶端程序:
[csharp] view plaincopyprint?
?
運行效果圖:
資源下載:
http://download.csdn.net/detail/u011484013/9488304
總結
以上是生活随笔為你收集整理的C# 通过socket实现UDP 通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么样的项目经历会让面试官眼前一亮
- 下一篇: 无符号哥伦布指数编码