• Socket通讯成功案例TCP/UDP


    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
            }
        }
    }
    龙腾一族至尊龙骑
  • 相关阅读:
    studyframe项目总结
    js三级联动
    ajax提交,获取后台数据
    密码验证
    产生验证码
    使用泛型 ,做计算器
    web前端,css
    VS快捷键
    我的未来编码规范
    如何将CAJ文档转化为doc文档
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/13386606.html
Copyright © 2020-2023  润新知