zoukankan      html  css  js  c++  java
  • 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
            }
        }
    }
    龙腾一族至尊龙骑
  • 相关阅读:
    Visual Studio Installer打包安装项目VS2015
    在WinCE上播放声音、设置透明图片、系统音量 C#
    虚函数、抽象函数以及接口的区别
    Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.
    项目中重新引用WCF报错
    为什么0.1+0.2=0.30000000000000004
    MVC自定义错误页404静态页
    DP 网易内推:合唱团
    TFBOY 养成记 一些比较好多文章。
    机器学习笔记:为什么要对数据进行归一化处理?
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/13386606.html
Copyright © 2011-2022 走看看