婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > C#利用服務器實現客戶端之間通信

C#利用服務器實現客戶端之間通信

熱門標簽:電銷專用外呼線路 漯河外呼調研線路 旅游地圖標注線路 電話機器人鑰匙扣 威力最大的電銷機器人 400電話唐山辦理 電銷外呼系統是違法的嗎 廣西房產智能外呼系統推薦 地圖標注位置怎么弄圖

先來講述下我自己對于整個Socket通信過程的理解,畢竟初學,說錯見諒,知道錯了會改正~ 

首先在服務端新建一個serverSocket,對其進行初始化(一般包含AddressFamily:IP地址類型,SocketType:Socket傳輸數據方式,ProtoType:傳輸協議); 

接著我們要設置server端要綁定的IP:port;然后開始監聽,并設置最多同時監聽多少個Client.

這時,服務端就在等待狀態,直到某一個Client連接到這個ip:port上,這時serverSocket.Accept()工作,獲得這個連接。(此時的連接是有地址信息的哦!記得保存) 

獲得連接之后,server就可以和這個Client進行通信了,當加入第二個Client(我們稱其為ClientB)時,Server接收到ClientB的消息,可以將這個消息轉發給前一個Client(我們稱其為ClientA),當受到ClientA的消息,也可以轉發給ClientB。這樣就實現了Clients之間的通信了。(重點在保存連接信息!!)

那么現在貼上代碼講解:

Server端代碼 

namespace SocketServer
{
  class Program
  {
    private static byte[] result = new byte[1024];
   
    static Socket serverSocket;
    private static string client;
    private static Socket clientSocket;
    //我這里存了兩個Client,因為自己電腦開了兩個Client,不會有多的
    //理論上應該開一個Socket[]來保存信息,最好用一個二元組將client的信息和連接綁定起來
    //這樣就可以實現斷開連接后下次登陸還是可以識別是這個Client
    private static Socket clientSocketA=null;
    private static Socket clientSocketB=null;
    
    static void Main(string[] args)
    {
      Program.SetPort(8885);
    }
    private static void SetPort(int port)
    {
      IPAddress ip = IPAddress.Parse("127.0.0.1");//set ip
      serverSocket = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp);//initialize
      serverSocket.Bind(new IPEndPoint(ip, port));//bind
      serverSocket.Listen(10);
      //進入監聽狀態
      Console.WriteLine("監聽{0}成功", serverSocket.LocalEndPoint.ToString());
      //開啟一個線程來監聽客戶端連接
      Thread myThread = new Thread(ListenClientConnect);
      myThread.Start();
      Console.ReadLine();

    }
    /// summary>
    /// 監聽客戶端連接
    /// /summary>
    private static void ListenClientConnect()
    {
      while (true)
      {
        //Client連接上后 得到這個連接
        clientSocket = serverSocket.Accept();

        //這里我因為只有兩個Client,所以就簡單寫了
        if (clientSocketA == null)
        {
          clientSocketA = clientSocket;
        }
        else if (clientSocketB == null)
        {
          clientSocketB = clientSocket;
        }
        else
        {
          //當其中一個斷開了,又重新連接時,需要再次保存連接
          if (clientSocketB.IsBound)
          {
            clientSocketA = clientSocketB;
            clientSocketB = clientSocket;
          }
          else
          {
            clientSocketB = clientSocketA;
            clientSocketA = clientSocket;
          }
          
        }
        clientSocket.Send(Encoding.ASCII.GetBytes("say hello"));
        //開個線程接收Client信息
        Thread receivedThread = new Thread(ReceiveMessage);
        receivedThread.Start(clientSocket);

      }
    }
   
    private static void ReceiveMessage(object clientSocket)
    {
      Socket myClientSocket = (Socket) clientSocket;
      
      while (true)
      {
        try
        {
          int revceiveNumber = myClientSocket.Receive(result);
          //Console.WriteLine("接受客戶端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString()
          //  , Encoding.ASCII.GetString(result, 0, revceiveNumber));
          Console.WriteLine(Encoding.ASCII.GetString(result, 0, revceiveNumber));
          if (myClientSocket == clientSocketA)
          {
            Console.WriteLine("receive from A");
            if (clientSocketB!=nullclientSocketB.IsBound)
            {
              Console.WriteLine("a IS BOUND");
              clientSocketB.Send(result, 0, revceiveNumber, SocketFlags.None);
            }
            else
            {
              myClientSocket.Send(Encoding.ASCII.GetBytes("the people is not online! Send Failed!"));
              Console.WriteLine("對方不在線上,發送失敗!");
            }
          }
          else
          {
            Console.WriteLine("receive from B");
            if (clientSocketA != null  clientSocketA.IsBound)
            {
              Console.WriteLine("a IS BOUND");
              clientSocketA.Send(result, 0, revceiveNumber, SocketFlags.None);
            }  
            else
            {
              myClientSocket.Send(Encoding.ASCII.GetBytes("the people is not online! Send Failed!"));
              Console.WriteLine("對方不在線上,發送失敗!");
            }

          }
          
        }
        catch(Exception ex)
        {
          Console.WriteLine(ex.Message);
          myClientSocket.Shutdown(SocketShutdown.Both);
          myClientSocket.Close();
          break;

        }
      }

    }
  }
}

Client端代碼(因為都差不多 就只貼一個了) 

namespace SocketClient
{
  class Program
  {
    private static byte[] result = new byte[1024];
    private static Socket clientSocket;
    private static void ListenServer()
    {
      while (true)
      {
        result = new byte[1024];
        int receiveLength = clientSocket.Receive(result);
        
        Console.WriteLine("{0}", Encoding.ASCII.GetString(result, 0, receiveLength));
      }
      
    }
    static void Main(string[] args)
    {

      IPAddress ip = IPAddress.Parse("127.0.0.1");
      clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      try
      {
        clientSocket.Connect(ip, 8885);
        Console.WriteLine("連接成功!");

      }
      catch (Exception e)
      {
        Console.WriteLine("連接失敗!");
        return;
      }
      Thread threadRead = new Thread(ListenServer);
      threadRead.Start();
     

      while(true)
      {
        try
        {
          Thread.Sleep(1000);
          string sendMessage = Console.ReadLine();
          clientSocket.Send(Encoding.ASCII.GetBytes("Sylvia:"+sendMessage));
          
        }
        catch (Exception ex)
        {
          clientSocket.Shutdown(SocketShutdown.Both);
          clientSocket.Close();
          break;
        }

      }
      Console.WriteLine("發送完畢 按回車退出");
      Console.ReadKey();
    }
  }
}

寫的時候要特別注意一下Send信息的時候,注意byte[]的傳輸大小,很容易變成byte[]數組的大小而不是內容的大小。 

這個大家就自己嘗試吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • C#基于TCP協議的服務器端和客戶端通信編程的基礎教程
  • C#實現的Socket服務器端、客戶端代碼分享
  • c#多線程網絡聊天程序代碼分享(服務器端和客戶端)
  • C#串口通信程序實例詳解
  • C#實現Socket通信的解決方法
  • C#中使用UDP通信實例
  • C#中異步Socket通信編程代碼實例
  • C#串口通信實現方法
  • c#實現簡單控制臺udp異步通信程序示例

標簽:試駕邀約 湘西 銅陵 湖北 綏化 無錫 欽州 焦作

巨人網絡通訊聲明:本文標題《C#利用服務器實現客戶端之間通信》,本文關鍵詞  利用,服務器,實現,客戶端,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《C#利用服務器實現客戶端之間通信》相關的同類信息!
  • 本頁收集關于C#利用服務器實現客戶端之間通信的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩欧美国产电影| 亚洲成av人影院在线观看网| 欧美成人福利视频| 欧美一区二区日韩| 日韩一区二区三区视频在线观看| 91久久国产综合久久| 欧洲另类一二三四区| 欧美三级日韩在线| 这里只有精品电影| 日韩一区二区影院| wwww国产精品欧美| 国产精品丝袜91| 国产精品乱码一区二区三区软件| 国产精品理论片在线观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧美综合网| 亚洲一区二区三区四区的| 香蕉影视欧美成人| 九色porny丨国产精品| 国产高清不卡一区二区| 成人aaaa免费全部观看| 99久久精品国产导航| 欧美人与性动xxxx| 国产蜜臀av在线一区二区三区| 亚洲欧美在线高清| 日本欧美肥老太交大片| 成人免费看视频| 欧美日韩国产一区| 欧美激情一区二区三区四区| 亚洲女女做受ⅹxx高潮| 六月婷婷色综合| 91丝袜美腿高跟国产极品老师 | 亚洲午夜精品久久久久久久久| 国产精品美女久久久久久久网站| 亚洲美女精品一区| 韩国理伦片一区二区三区在线播放| 国产精品一品二品| 欧美肥妇bbw| 国产精品国产三级国产| 日韩 欧美一区二区三区| 波多野结衣亚洲一区| 91精品国产综合久久久久久漫画| 亚洲国产精品v| 午夜影视日本亚洲欧洲精品| 成人国产电影网| 欧美丰满少妇xxxbbb| 综合久久国产九一剧情麻豆| 日韩成人免费电影| 91蝌蚪porny九色| 久久久久亚洲综合| 五月天久久比比资源色| 国产成人亚洲综合a∨婷婷| 91精品国产综合久久久久久| 亚洲欧洲成人精品av97| 国产成人亚洲综合a∨猫咪| 制服丝袜亚洲网站| 亚洲一区国产视频| 国产 日韩 欧美大片| 亚洲精品一线二线三线| 日本v片在线高清不卡在线观看| 99久久精品免费看国产免费软件| 欧美www视频| 日日摸夜夜添夜夜添亚洲女人| 色噜噜夜夜夜综合网| 1000精品久久久久久久久| 国产成人a级片| 精品国产乱码久久久久久1区2区| 日韩不卡免费视频| 91精品国产色综合久久不卡电影 | 欧美日韩精品一区二区天天拍小说 | 国产福利一区二区三区视频| 日韩一区二区三区精品视频| 日韩影院免费视频| 欧美精品丝袜久久久中文字幕| 一区二区三区四区高清精品免费观看 | 精品国产伦一区二区三区免费| 秋霞成人午夜伦在线观看| 9191国产精品| 精品一区二区国语对白| 精品日韩99亚洲| 成人免费视频caoporn| 中文字幕免费不卡在线| 91玉足脚交白嫩脚丫在线播放| 亚洲欧洲av色图| 欧美色图天堂网| 亚洲电影你懂得| 欧美一级欧美三级| 精品一区二区在线播放| 久久久美女艺术照精彩视频福利播放| 国产乱码精品一区二区三区av | 99久久综合色| 亚洲黄网站在线观看| 欧美午夜一区二区三区免费大片| 香蕉成人伊视频在线观看| 欧美精品一二三区| 韩国三级电影一区二区| 国产清纯白嫩初高生在线观看91| 成人av集中营| 亚洲大片一区二区三区| 欧美成人三级电影在线| 福利一区在线观看| 亚洲在线视频网站| 欧美岛国在线观看| 成人国产精品免费观看动漫| 亚洲福利视频导航| 91在线精品秘密一区二区| 亚洲高清视频中文字幕| 日韩一区在线播放| 欧美日韩亚洲另类| 中文字幕制服丝袜一区二区三区 | 欧美一区二区视频在线观看 | av一二三不卡影片| 午夜日韩在线观看| 久久精品免费在线观看| 欧美视频三区在线播放| 国v精品久久久网| 亚洲1区2区3区4区| 国产精品理论片在线观看| 91麻豆精品国产综合久久久久久| 国产精品99精品久久免费| 夜夜嗨av一区二区三区网页| 久久综合九色综合97婷婷女人 | 亚洲免费观看在线视频| 欧美视频精品在线| 成人99免费视频| 久久精品国产精品亚洲红杏| 亚洲线精品一区二区三区| 国产精品视频一二三| 日韩一级完整毛片| 欧美色综合天天久久综合精品| av一二三不卡影片| 国产精品 日产精品 欧美精品| 美女视频一区在线观看| 性久久久久久久| 亚洲一区影音先锋| 夜夜嗨av一区二区三区| 亚洲国产精品t66y| 中文字幕精品—区二区四季| 欧美白人最猛性xxxxx69交| 欧美日韩电影一区| 欧洲人成人精品| 欧美午夜一区二区三区免费大片| 91社区在线播放| 成人a区在线观看| 国产成人av一区| 懂色av中文一区二区三区| 国产精品一二三区| 国产成人丝袜美腿| 色综合亚洲欧洲| 色欧美片视频在线观看| 色综合久久综合网欧美综合网| a在线欧美一区| 色综合天天天天做夜夜夜夜做| 色av成人天堂桃色av| 欧洲视频一区二区| 欧美日韩国产高清一区二区三区 | 欧美日韩中文另类| 欧美女孩性生活视频| 欧美剧情片在线观看| 日韩欧美国产精品一区| 国产亚洲欧美一级| 中文字幕一区二区三区视频| 亚洲免费观看在线观看| 亚洲国产精品一区二区久久恐怖片| 亚洲激情在线播放| 亚洲.国产.中文慕字在线| 男女男精品视频网| 成人午夜看片网址| 91久久精品一区二区三| 正在播放一区二区| 国产女主播在线一区二区| 亚洲免费观看高清完整版在线| 亚洲午夜久久久久久久久电影院| 日韩精品亚洲一区| 国产精品夜夜嗨| 精品视频在线免费看| 日韩欧美国产麻豆| 亚洲伦理在线免费看| 奇米色一区二区三区四区| 丁香婷婷综合网| 欧美日韩国产一区二区三区地区| 久久蜜桃av一区二区天堂| 一区二区三区丝袜| 国产婷婷色一区二区三区| 国产九色精品成人porny| 国产乱码精品一区二区三| 欧美影院午夜播放| 久久九九国产精品| 一区二区三区成人在线视频| 国产精品资源在线观看| 欧美日韩综合在线免费观看| 久久精品夜色噜噜亚洲aⅴ| 一个色妞综合视频在线观看| 激情文学综合丁香| 欧美日韩视频在线第一区| 中文字幕的久久| 国产中文字幕精品| 欧美日韩国产成人在线91| 国产精品久久久久久久久果冻传媒 | 日韩美女主播在线视频一区二区三区|