Socket通讯成功案例TCP/UDP
1、服务端
新建控制台应用程序ConsoleUDPServer,代码如下:
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace ConsoleUDP { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("服务端。。。"); Console.ForegroundColor = ConsoleColor.Gray; #region TCP/IP //int port = 1234; //string host = "127.0.0.1"; //IPAddress ip = IPAddress.Parse(host); //IPEndPoint ipe = new IPEndPoint(ip, port); //Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //sSocket.Bind(ipe); //sSocket.Listen(0); //Console.WriteLine("监听已经打开,请等待"); //Socket serverSocket = null; //try //{ // //receive message // serverSocket = sSocket.Accept(); // Console.WriteLine("连接已经建立"); // string recStr = ""; // byte[] recByte = new byte[4096]; // while (serverSocket != null) // { // int bytes = serverSocket.Receive(recByte, recByte.Length, 0); // recStr = Encoding.Default.GetString(recByte, 0, bytes); // //send message // Console.WriteLine("服务器端收到来自client数据:{0}", recStr); // string sendStr = $"send to client :{recStr}"; // byte[] sendByte = Encoding.Default.GetBytes(sendStr); // serverSocket.Send(sendByte, sendByte.Length, 0); // Thread.Sleep(TimeSpan.FromSeconds(2)); // } //} //catch (Exception) //{ //} //finally //{ // serverSocket.Close(); // sSocket.Close(); //} //Console.ReadLine(); #endregion #region UDP int port = 1234; string host = "127.0.0.1"; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); //udp需要注释用该句话SocketType.Stream => SocketType.Dgram,ProtocolType.Tcp => ProtocolType.Udp Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sSocket.Bind(ipe); //sSocket.Listen(0);//udp需要注释用该句话 Console.WriteLine("监听已经打开,请等待"); try { //receive message //serverSocket = sSocket.Accept();//udp需要注释用该句话 Console.WriteLine("连接已经建立"); string recStr = ""; byte[] recByte = new byte[4096]; IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0); EndPoint endP = (EndPoint)endPoint; while (true) { int bytes = sSocket.ReceiveFrom(recByte, ref endP); recStr = Encoding.Default.GetString(recByte, 0, bytes); //send message Console.WriteLine("服务器端收到来自client数据:{0}", recStr); string sendStr = $"send to client :{recStr}"; byte[] sendByte = Encoding.Default.GetBytes(sendStr); //serverSocket.Send(sendByte, sendByte.Length, 0); sSocket.SendTo(sendByte,0, sendByte.Length,SocketFlags.None, endP); Thread.Sleep(TimeSpan.FromSeconds(2)); } } catch (Exception) { } finally { sSocket.Close(); sSocket.Close(); } Console.ReadLine(); #endregion } } }
2、客户端
新建控制台应用程序ConsoleUDPClient,代码如下:
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace ConsoleUDPClient { class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("客户端。。。"); Console.ForegroundColor = ConsoleColor.Gray; #region TCP/IP //int port = 1234; //string host = "127.0.0.1";//服务器端ip地址 //IPAddress ip = IPAddress.Parse(host); //IPEndPoint ipe = new IPEndPoint(ip, port); //Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //clientSocket.Connect(ipe); //string sendStr="client000 "; //int i = 0; //while (true) //{ // try // { // //send message // sendStr = $"客户端数据:{++i}"; // Console.WriteLine($"sendStr:{sendStr}"); // byte[] sendBytes = Encoding.Default.GetBytes(sendStr); // clientSocket.Send(sendBytes); // //receive message // string recStr = ""; // byte[] recBytes = new byte[4096]; // int bytes = clientSocket.Receive(recBytes, recBytes.Length, 0); // recStr += Encoding.Default.GetString(recBytes, 0, bytes); // Console.WriteLine($"recStr:{recStr}"); // Thread.Sleep(TimeSpan.FromSeconds(2)); // } // catch (Exception) // { // } //} #endregion #region UDP int port = 1234; string host = "127.0.0.1";//服务器端ip地址 IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint ipe1 = new IPEndPoint(IPAddress.Any, 0); EndPoint ipend = (EndPoint)ipe1; int i = 0; while (true) { try { string sendStr = $"客户端数据:{++i}"; Console.WriteLine($"sendStr:{sendStr}"); byte[] sendBytes = Encoding.Default.GetBytes(sendStr); clientSocket.SendTo(sendBytes, 0, sendBytes.Length, SocketFlags.None, ipe); //receive message string recStr = ""; byte[] recBytes = new byte[4096]; int bytes = clientSocket.ReceiveFrom(recBytes, ref ipend); recStr += Encoding.Default.GetString(recBytes, 0, bytes); Console.WriteLine($"recStr:{recStr}"); Thread.Sleep(TimeSpan.FromSeconds(2)); } catch (Exception) { } } #endregion } } }