zoukankan      html  css  js  c++  java
  • C# 底层协议开发(1)

         何为协议?先撇开专业术语不说,顾名思义,就是相互合作的暗语(不怕公开的话),

    比如,假如我俩商量好了,1+1=22,当我写1+1的时候,你如果写2,那就

    违反协议了...

         同理,做底层开发的时候,先必须定义好 Client 与  Server(或者 Client) 的协作符号,

    比如,

    A : 要計算1+1=22;

    B: 要計算2+2=44;

    exit :  退出;

    用C#開發,,代碼如下:

        class Program
        {

            static void Main(string[] args)
            {
                AppDomain.CreateDomain("socketServer").DoCallBack(
                    delegate
                    {
                         byte[] result = new byte[1024];
                         int myport = 8889;

                         IPAddress ip = IPAddress.Parse("192.168.2.136");
                        IPEndPoint ipe = new IPEndPoint(ip,myport);
                         Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                             ProtocolType.Tcp);
                         serverSocket.Bind(ipe);
                         serverSocket.Listen(1);
                         Console.WriteLine("已經啟動監聽!");
                         Thread myThread = new Thread(new ThreadStart(delegate {
                             while (true)
                             {
                                 Socket clientsocket = serverSocket.Accept();
                                 clientsocket.Send(Encoding.UTF8.GetBytes("您好!,您已經與我取得聯繫了!"));

                                 Thread receiveThread = new Thread(delegate(object clientSocket) {
                                     Socket myClientSocket = (Socket)clientSocket;
                                     string casestr ="";
                                     while (true)
                                     {
                                         int receiveNumber = myClientSocket.Receive(result);
                                         //Console.WriteLine("接受客戶端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.UTF8.GetString(result, 0, receiveNumber));
                                         casestr = Encoding.UTF8.GetString(result, 0, receiveNumber);
                                         switch ( casestr)
                                         {
                                             case "A":
                                                 Console.WriteLine("1+1=22");
                                                 break;
                                             case "B":
                                                 Console.WriteLine("2+2=44");
                                                 break;
                                             default:
                                                 Console.WriteLine("無此協議");
                                                 break;
                                         }
                                            

                                     }
                                 });

                                 receiveThread.Start(clientsocket);
                             }
                               
                         }));
                         myThread.Start();
                    });

                IPAddress IPCL = IPAddress.Parse("192.168.2.136");
                Socket CLSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                CLSocket.Connect(new IPEndPoint(IPCL,8889));
                Console.WriteLine("鏈接服務成功\r\n");
                byte[]rs = new byte[1024];
                int receivecount = CLSocket.Receive(rs);
                Console.WriteLine("接受消息{0}\r\n", Encoding.UTF8.GetString(rs, 0, receivecount));

                //CLSocket.Send(Encoding.UTF8.GetBytes("我是客戶端!\r\n"));
                string str = "A";
                while (true)
                {
                    if (str == "exit") return;
                    CLSocket.Send(Encoding.UTF8.GetBytes(str ));
                    str = Console.ReadLine();
                }

     
            }

  • 相关阅读:
    PHP-------抽象和接口
    MySQL函数
    MySQL索引
    MySQL语法
    MySQL视图、事务
    最简洁粗暴版的虚拟用户配置FTP
    linux网络bond技术
    CentOS 7服务
    Nginx 基础
    shell 截取指定的字符串
  • 原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua_201201161037.html
Copyright © 2011-2022 走看看