using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Net;
using System.Net.Sockets;
namespace A20_UDP_Server
{
class Server
{
private Socket _SockServer; //服務器監聽套接字
private bool _IsListenContecion = true; //是否在監聽(目的是方便退出)
public Server()
{
Console.WriteLine("---------------服務端啓動-----------------");
//定義網絡終結點(封裝IP與端口)
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1000);
//實例化套接字
_SockServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//服務器端綁定地址
_SockServer.Bind(endPoint);
EndPoint ep = endPoint as EndPoint;
while (true)
{
byte[] msgArray = new byte[1024 * 1024]; //1M空間
//接收客戶端發來的數據,返回真實的長度
int trueClinetMsgLength = _SockServer.ReceiveFrom(msgArray, ref ep);
//byte數組轉String
string strMsg = Encoding.UTF8.GetString(msgArray, 0, trueClinetMsgLength);
//顯示客戶端發來的數據
Console.WriteLine("客戶端發來的數據:" + strMsg);
}
}
static void Main(string[] args)
{
Server obj = new Server();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Net;
using System.Net.Sockets;
namespace A21_UDP_Client
{
class Client
{
private Socket _SockClient; //客戶端通訊套接字
private IPEndPoint serverEndPoint; //連接到的服務器IP與端口信息
public Client()
{
//通訊地址端口號
serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1000);
//建立客戶端的Sockte
_SockClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint ep = serverEndPoint as EndPoint;
while (true)
{
//輸入信息
string strMsg = Console.ReadLine();
//退出
if (strMsg == "gm_exit")
{
break;
}
//字節轉換
Byte[] byteArray = Encoding.UTF8.GetBytes(strMsg);
//發送數據
_SockClient.SendTo(byteArray, ep);
Console.WriteLine("我: " + strMsg);
}
//關閉連接
_SockClient.Shutdown(SocketShutdown.Both);
//清理連接的資源
_SockClient.Close();
}
static void Main(string[] args)
{
Client obj = new Client();
}
}
}
Server類和Client類分別在不同的啓動項中
這裏的Server和Client本質上是“接收端”和“發送端”的關係。
並非真正意義上的服務器和客戶端。