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
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值