使用Socket 里的Udp协议,SocketType 数据传输方式用Dgram 数据报,使用UDP 通信不需要建立链接 ,只要知道对方的IP 和端口号 即可 。
UDP 即可以作为服务端 也可以作为客服端。
static Socket UDPSocket;
static void Main(string[] args)
{
//1 创建 socket
UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//2 绑定 端口号
EndPoint endPoint = new IPEndPoint(IPAddress.Parse("172.17.144.3"), 7788);
UDPSocket.Bind(endPoint);
Thread t = new Thread(ReceiveMsg);
t.IsBackground = true;
t.Start();
}
static void ReceiveMsg()
{
byte[] data = new byte[1024];
EndPoint point = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
int length = UDPSocket.ReceiveFrom(data, ref point);
string mes = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("服务器从" + ((IPEndPoint)point).Address + "端口:" + ((IPEndPoint)point).Port + "收到了消息:" + mes);
}
}
UDPSocket.ReceiveFrom() 会停止 直到 收到了数据
SendTo 发给指定的 IP
static void Main(string[] args)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint endPoint = new IPEndPoint(IPAddress.Parse("172.17.144.3"), 7788);
while (true)
{
string mes = Console.ReadLine();
socket.SendTo(Encoding.UTF8.GetBytes(mes),endPoint);
}
}
SendTo方法
UDP 面向无连接 丢包率高 系统资源要求低 快
TCP 面向链接 丢包率低 系统资源要求高 稳 三次握手 易被攻击
https://www.cnblogs.com/xiaomayizoe/p/5258754.html TCP 和UDP的区别
TCP与UDP区别总结:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道