利用UDP通信
因为UDP是无连接的 在Server端创建套接字(创建套接字参数也不同) 绑定IP Port 之后不需要进行监听 接收连接了 可以直接进行数据的接收与发送
在服务端创建Socket需要绑定 在客户端创建不需要绑定
在服务端接收消息用的是 ReceiveFrom();
在客户端发送消息用的是 SendTo
Server
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_Server
{
class Program
{
static Socket udpServer;
static void Main(string[] args)
{
udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpServer.Bind(new IPEndPoint(IPAddress.Parse("10.181.245.87"), 7788));
new Thread(Receive) { IsBackground = true }.Start();
// udpServer.Close();
Console.ReadLine();
}
static void Receive()
{
while (true)
{
EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] data = new byte[1024];
int len = udpServer.ReceiveFrom(data, ref remoteEndPoint);
string message = Encoding.UTF8.GetString(data, 0, len);
Console.WriteLine("从ip:" + (remoteEndPoint as IPEndPoint).Address.ToString() + ":" + (remoteEndPoint as IPEndPoint).Port + "收到了数据:" + message);
}
}
}
}
Client端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace UDP_Client
{
class Program
{
static void Main(string[] args)
{
Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint serverPoint = new IPEndPoint(IPAddress.Parse("10.181.245.87"), 7788);
while (true)
{
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
udpClient.SendTo(data, serverPoint);
}
Console.ReadKey();
}
}
}