<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# Socket通信

      Socket簡介

      Socket又稱套接字,它是處于應用層和傳輸層之間的一個抽象接口。它封裝了TCP/UDP等的底層協議,通過它我們就可以實現應用程序或者進程之間(它們可以處在網絡上的不同位置)的通信。

      Socket的表示方法

      因為Socket是兩個程序之間的通信,只需要給定IP地址和端口號就可以進行通信。
      Socket= (IP,PORT)

      Socket(TCP)的工作流程


      可以看到,總的工作流程就是:

      1. 服務端監聽
      2. 客戶端(可以有多個)請求連接
      3. 確認連接進行通信

      針對服務器端的工作流程是:

      1. 建立Socket對象
      2. Bind(ip, port)綁定端口。比如說本地的(127.0.0.1, 6666)
      3. Listen()開始監聽
      4. Accept()接受客戶端連接
      5. Send()和Receive()進行通信
      6. Close()關閉套接字

      而針對客戶端的工作流程是:

      1. 建立Socket對象
      2. Connet(ip, port)向某個IP下的PORT端口發起連接請求,接受后開始通信
      3. Send()和Receive()進行通信
      4. Close() 關閉套接字

      關于IPAddress.Parse("127.0.0.1") 和 Address.Any的問題,詳見;

      https://blog.csdn.net/u010178308/article/details/77650919

      代碼下載:https://github.com/urahyou/C-Sharp-Socket-example/tree/master

      Server端代碼:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using System.Net.Sockets;
      using System.Net;
      using System.Threading;
      
      namespace socket
      {
          class Program
          {
      
              static Socket serverSocket;
             
              
      
              static void Main(string[] args)
              {
                  SetListen();  //開始監聽
      
              }
      
              static void SetListen()
              {
                  serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      
                  try
                  {
                      //這里最好改成IPAddress.Any, 這樣放到服務器上就會同時監聽所有網卡上的端口,比如有內外雙網的服務器
                      serverSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));
                      serverSocket.Listen(2);
      
                      Thread thread = new Thread(Listen);
                      thread.Start(serverSocket);
      
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.Message);
                  }
                  
              }
      
              static void Listen(object so)
              {
                  Socket serverSocket = so as Socket;
      
                  while (true)
                  {
                      try
                      {
                          Socket clientSocket = serverSocket.Accept(); //接受客戶端接入
                          // 獲取鏈接IP地址
                          string clientPoint = clientSocket.RemoteEndPoint.ToString();
      
                          //開啟新線程來不停接受信息
                          Thread rec = new Thread(Receive);
                          rec.Start(clientSocket);
      
                          //開啟新線程來不停發送信息
                          Thread sen = new Thread(Send);
                          sen.Start(clientSocket);
                      }
                      catch(Exception ex)
                      {
                          Console.WriteLine(ex.Message, ex);
                          break;
                      }
                  }
                  serverSocket.Close();
              }
      
              static void Receive(object so)
              {
                  Socket clientSocket = so as Socket;
      
                  string clientPoint = clientSocket.RemoteEndPoint.ToString();
                  while (true)
                  {
                      try
                      {
                          byte[] buffer = new byte[1024];
                          int len = clientSocket.Receive(buffer);
                          //Console.WriteLine(len.ToString(), buffer);
                          if (len == 0) break;
      
                          string msg = Encoding.UTF8.GetString(buffer, 0, len);
                          Console.WriteLine("客戶端說:"+ msg);
                      }
                      catch(Exception ex)
                      {
                          Console.WriteLine(ex);
                      }
                  }
              }
      
              static void Send(object so)
              {
                  Socket clientSocket = so as Socket;
      
                  while (true)
                  {
                      //獲取控制臺輸入
                      string input = Console.ReadLine();
      
                      byte[] msg = Encoding.UTF8.GetBytes(input);
                      clientSocket.Send(msg);
                  }
              }
          }
      }
      
      

      Client端代碼

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using System.Net;
      using System.Net.Sockets;
      using System.Threading;
      
      
      
      namespace socket_client
      {
          class Program
          {
              static Socket clientSocket;
      
              static void Main(string[] args)
              {
                  
                  Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                  
                  //連接
                  Connect(); 
              }
      
              //連接客戶端,連接后開始監聽發送過來的消息并且把輸入的信息發給服務端
              static void Connect()
              {
                  clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
                  
                  try
                  {
                      //連接
                      clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));
      
                      //獨立線程來接受來自服務端的數據
                      Thread receive = new Thread(Receive);
                      receive.Start(clientSocket);
      
                      //獨立線程來發送數據給服務端
                      Thread send = new Thread(Send);
                      send.Start(clientSocket); 
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.Message);
                  }
              }
      
              static void Receive(object so)
              {
                  Socket clientSocket = so as Socket;
      
      
                  while (true)
                  {
                      Console.ForegroundColor = ConsoleColor.Green;  // 修改文字顏色為綠色
                      try
                      {
                          byte[] buffer = new byte[1024];
                          int len = clientSocket.Receive(buffer);
                          if (len > 0)
                          {
                              string msg = Encoding.UTF8.GetString(buffer);
                              
                              Console.WriteLine("服務端說:"+ msg);
                          }
                      }
                      catch (Exception ex)
                      {
                          Console.WriteLine(ex);
                          break;
                      }
                  }
                  clientSocket.Close();
              }
      
              static void Send(object so)
              {
                  Socket clientSocket = so as Socket;
      
                  while (true)  // 監聽鍵盤輸入
                  {
                      Console.ForegroundColor = ConsoleColor.Red;
                      //獲取鍵盤輸入
                      string input = Console.ReadLine();
                      //編碼
                      byte[] buffer = Encoding.UTF8.GetBytes(input);
                      //發送
                      clientSocket.Send(buffer);
                  }
              }
          }
      }
      
      
      posted @ 2022-07-19 19:12  裏表異體  閱讀(3715)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产69久久精品成人看| 国产成人av综合色| 亚洲男人的天堂av手机在线观看| 久久不见久久见免费视频观看| 少妇熟女久久综合网色欲| 日韩中文字幕高清有码| 中文字幕在线精品国产| 亚洲天堂精品一区二区| 日韩美女亚洲性一区二区| 成人网站免费看黄a站视频| 国产在线午夜不卡精品影院| 日韩欧美不卡一卡二卡3卡四卡2021免费| 熟女一区二区中文字幕| 亚洲av色在线观看国产| 亚洲精品一区国产| 成年女人黄小视频| 免费国产午夜理论片不卡| 精品国产成人午夜福利| 日韩熟妇中文色在线视频| 精品 日韩 国产 欧美 视频| 高清破外女出血AV毛片| XXXXXHD亚洲日本HD| 波多野结av衣东京热无码专区| 人妻系列无码专区无码中出| 亚洲高清有码在线观看| 国产区成人精品视频| 欧美不卡无线在线一二三区观| 久热这里只有精品12| 成人一区二区三区激情视频| 极品美女扒开粉嫩小泬图片| 成人午夜在线观看日韩| gogogo高清在线播放免费| 丰满的少妇一区二区三区| 婷婷色香五月综合缴缴情香蕉| 国产精品中文字幕久久| 深夜福利国产精品中文字幕| 国产无套精品一区二区三区 | 亚洲国产成人va在线观看天堂| 亚洲av永久无码精品成人| 国精品午夜福利视频不卡| 日本一卡二卡3卡四卡网站精品|