校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > C#利用服務(wù)器實(shí)現(xiàn)客戶(hù)端之間通信

C#利用服務(wù)器實(shí)現(xiàn)客戶(hù)端之間通信

熱門(mén)標(biāo)簽:電銷(xiāo)專(zhuān)用外呼線路 漯河外呼調(diào)研線路 旅游地圖標(biāo)注線路 電話(huà)機(jī)器人鑰匙扣 威力最大的電銷(xiāo)機(jī)器人 400電話(huà)唐山辦理 電銷(xiāo)外呼系統(tǒng)是違法的嗎 廣西房產(chǎn)智能外呼系統(tǒng)推薦 地圖標(biāo)注位置怎么弄圖

先來(lái)講述下我自己對(duì)于整個(gè)Socket通信過(guò)程的理解,畢竟初學(xué),說(shuō)錯(cuò)見(jiàn)諒,知道錯(cuò)了會(huì)改正~ 

首先在服務(wù)端新建一個(gè)serverSocket,對(duì)其進(jìn)行初始化(一般包含AddressFamily:IP地址類(lèi)型,SocketType:Socket傳輸數(shù)據(jù)方式,ProtoType:傳輸協(xié)議); 

接著我們要設(shè)置server端要綁定的IP:port;然后開(kāi)始監(jiān)聽(tīng),并設(shè)置最多同時(shí)監(jiān)聽(tīng)多少個(gè)Client.

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

獲得連接之后,server就可以和這個(gè)Client進(jìn)行通信了,當(dāng)加入第二個(gè)Client(我們稱(chēng)其為ClientB)時(shí),Server接收到ClientB的消息,可以將這個(gè)消息轉(zhuǎn)發(fā)給前一個(gè)Client(我們稱(chēng)其為ClientA),當(dāng)受到ClientA的消息,也可以轉(zhuǎn)發(fā)給ClientB。這樣就實(shí)現(xiàn)了Clients之間的通信了。(重點(diǎn)在保存連接信息!!)

那么現(xiàn)在貼上代碼講解:

Server端代碼 

namespace SocketServer
{
  class Program
  {
    private static byte[] result = new byte[1024];
   
    static Socket serverSocket;
    private static string client;
    private static Socket clientSocket;
    //我這里存了兩個(gè)Client,因?yàn)樽约弘娔X開(kāi)了兩個(gè)Client,不會(huì)有多的
    //理論上應(yīng)該開(kāi)一個(gè)Socket[]來(lái)保存信息,最好用一個(gè)二元組將client的信息和連接綁定起來(lái)
    //這樣就可以實(shí)現(xiàn)斷開(kāi)連接后下次登陸還是可以識(shí)別是這個(gè)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);
      //進(jìn)入監(jiān)聽(tīng)狀態(tài)
      Console.WriteLine("監(jiān)聽(tīng){0}成功", serverSocket.LocalEndPoint.ToString());
      //開(kāi)啟一個(gè)線程來(lái)監(jiān)聽(tīng)客戶(hù)端連接
      Thread myThread = new Thread(ListenClientConnect);
      myThread.Start();
      Console.ReadLine();

    }
    /// summary>
    /// 監(jiān)聽(tīng)客戶(hù)端連接
    /// /summary>
    private static void ListenClientConnect()
    {
      while (true)
      {
        //Client連接上后 得到這個(gè)連接
        clientSocket = serverSocket.Accept();

        //這里我因?yàn)橹挥袃蓚€(gè)Client,所以就簡(jiǎn)單寫(xiě)了
        if (clientSocketA == null)
        {
          clientSocketA = clientSocket;
        }
        else if (clientSocketB == null)
        {
          clientSocketB = clientSocket;
        }
        else
        {
          //當(dāng)其中一個(gè)斷開(kāi)了,又重新連接時(shí),需要再次保存連接
          if (clientSocketB.IsBound)
          {
            clientSocketA = clientSocketB;
            clientSocketB = clientSocket;
          }
          else
          {
            clientSocketB = clientSocketA;
            clientSocketA = clientSocket;
          }
          
        }
        clientSocket.Send(Encoding.ASCII.GetBytes("say hello"));
        //開(kāi)個(gè)線程接收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("接受客戶(hù)端{(lán)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("對(duì)方不在線上,發(fā)送失敗!");
            }
          }
          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("對(duì)方不在線上,發(fā)送失敗!");
            }

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

        }
      }

    }
  }
}

Client端代碼(因?yàn)槎疾畈欢?就只貼一個(gè)了) 

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("發(fā)送完畢 按回車(chē)退出");
      Console.ReadKey();
    }
  }
}

寫(xiě)的時(shí)候要特別注意一下Send信息的時(shí)候,注意byte[]的傳輸大小,很容易變成byte[]數(shù)組的大小而不是內(nèi)容的大小。 

這個(gè)大家就自己嘗試吧。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • C#基于TCP協(xié)議的服務(wù)器端和客戶(hù)端通信編程的基礎(chǔ)教程
  • C#實(shí)現(xiàn)的Socket服務(wù)器端、客戶(hù)端代碼分享
  • c#多線程網(wǎng)絡(luò)聊天程序代碼分享(服務(wù)器端和客戶(hù)端)
  • C#串口通信程序?qū)嵗斀?/li>
  • C#實(shí)現(xiàn)Socket通信的解決方法
  • C#中使用UDP通信實(shí)例
  • C#中異步Socket通信編程代碼實(shí)例
  • C#串口通信實(shí)現(xiàn)方法
  • c#實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)udp異步通信程序示例

標(biāo)簽:試駕邀約 湘西 銅陵 湖北 綏化 無(wú)錫 欽州 焦作

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《C#利用服務(wù)器實(shí)現(xiàn)客戶(hù)端之間通信》,本文關(guān)鍵詞  利用,服務(wù)器,實(shí)現(xiàn),客戶(hù)端,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《C#利用服務(wù)器實(shí)現(xiàn)客戶(hù)端之間通信》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于C#利用服務(wù)器實(shí)現(xiàn)客戶(hù)端之間通信的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久影院电视剧免费观看| 国产视频一区二区在线| 国产精品一区二区免费不卡| 一区二区三区精密机械公司| 久久日韩精品一区二区五区| 欧美日韩中文字幕精品| 成人免费高清视频在线观看| 日日欢夜夜爽一区| 综合激情成人伊人| 久久精品欧美一区二区三区不卡| 欧美三级电影精品| 一本色道亚洲精品aⅴ| 丁香婷婷深情五月亚洲| 久久99在线观看| 亚洲成人久久影院| 亚洲精品菠萝久久久久久久| 国产欧美综合在线观看第十页| 日韩一级片在线观看| 欧美日韩日本视频| 色婷婷精品大在线视频| va亚洲va日韩不卡在线观看| 精品亚洲成a人在线观看| 亚洲高清免费观看 | 欧美精品乱码久久久久久 | 91免费国产在线| 国产精品香蕉一区二区三区| 精品一区二区三区在线观看 | 91国在线观看| 91麻豆国产自产在线观看| 国产69精品久久99不卡| 国产美女精品在线| 国产在线精品一区二区夜色| 久久成人麻豆午夜电影| 免费人成网站在线观看欧美高清| 亚洲国产日韩综合久久精品| 亚洲综合丁香婷婷六月香| 一区二区三区在线视频观看58| 亚洲日本va午夜在线影院| 国产精品欧美极品| 国产精品久久久久四虎| 中文字幕av在线一区二区三区| 国产精品三级在线观看| 中文字幕中文字幕一区| 亚洲精品视频在线| 亚洲精品国产a| 香蕉加勒比综合久久| 日韩在线一区二区| 久久精品国产**网站演员| 久久成人免费网站| 岛国精品在线播放| 91麻豆国产自产在线观看| 在线免费观看日韩欧美| 欧美亚洲综合另类| 欧美一区二区三区小说| 欧美精品一区男女天堂| 国产无一区二区| 亚洲欧美偷拍卡通变态| 亚洲1区2区3区视频| 秋霞成人午夜伦在线观看| 国产乱码精品1区2区3区| 成人黄色av网站在线| 在线免费观看视频一区| 日韩情涩欧美日韩视频| 中文字幕国产一区二区| 伊人色综合久久天天人手人婷| 日韩成人伦理电影在线观看| 国产成人免费视频网站高清观看视频| 成人晚上爱看视频| 欧美日本视频在线| 久久亚区不卡日本| 夜夜嗨av一区二区三区中文字幕| 三级成人在线视频| 国产夫妻精品视频| 欧美日韩激情一区二区| 久久久一区二区三区| 亚洲综合在线观看视频| 美女一区二区三区| 91影视在线播放| 日韩美一区二区三区| 国产精品久久毛片| 日本不卡高清视频| 91色九色蝌蚪| 久久天天做天天爱综合色| 亚洲自拍偷拍欧美| 国产乱码精品1区2区3区| 欧美三级蜜桃2在线观看| 国产欧美综合在线观看第十页| 亚洲高清不卡在线| 国产98色在线|日韩| 制服视频三区第一页精品| 日韩一区在线免费观看| 麻豆一区二区三| 欧美性色黄大片手机版| 国产日韩在线不卡| 日韩av一区二区三区四区| 99v久久综合狠狠综合久久| 日韩一本二本av| 亚洲妇女屁股眼交7| 成人午夜在线播放| 日韩女同互慰一区二区| 亚洲电影一级片| a亚洲天堂av| 国产亚洲综合在线| 免费成人你懂的| 欧美性大战久久| 国产精品美女久久久久av爽李琼| 蜜臀91精品一区二区三区| 欧美少妇bbb| 亚洲精品你懂的| 国产成人无遮挡在线视频| 日韩三级电影网址| 日韩专区一卡二卡| 色偷偷久久一区二区三区| 国产精品毛片久久久久久| 黑人精品欧美一区二区蜜桃| 日韩一级视频免费观看在线| 亚洲国产精品久久艾草纯爱| 色婷婷久久99综合精品jk白丝 | 日韩毛片精品高清免费| 国产激情一区二区三区桃花岛亚洲| 欧美精品在线视频| 亚洲123区在线观看| 欧美亚洲一区二区在线观看| 自拍av一区二区三区| heyzo一本久久综合| 亚洲国产精品成人综合色在线婷婷| 国产伦理精品不卡| 亚洲精品在线一区二区| 精品一区二区日韩| 337p粉嫩大胆噜噜噜噜噜91av| 久久精品久久综合| 欧美va在线播放| 麻豆精品新av中文字幕| 日韩女优av电影在线观看| 久久成人久久爱| 久久婷婷色综合| 国产成人免费网站| 最新热久久免费视频| 92国产精品观看| 亚洲一区二区三区在线看| 欧美日韩一区精品| 日日噜噜夜夜狠狠视频欧美人| 欧美一区二区免费视频| 麻豆精品久久精品色综合| 精品少妇一区二区三区日产乱码| 激情图区综合网| 欧美激情在线看| 色视频成人在线观看免| 天堂va蜜桃一区二区三区漫画版| 欧美三级韩国三级日本一级| 免费在线观看成人| 久久久久久久久久久电影| 波波电影院一区二区三区| 依依成人精品视频| 欧美一区二区三区系列电影| 极品少妇xxxx偷拍精品少妇| 国产精品日韩成人| 欧美在线免费视屏| 日本美女一区二区三区| 国产亚洲精品资源在线26u| 99久久伊人网影院| 亚洲福利电影网| 久久综合色鬼综合色| 91美女片黄在线观看| 日韩在线播放一区二区| 久久久久久一二三区| 色综合婷婷久久| 麻豆91精品91久久久的内涵| 国产精品―色哟哟| 欧美放荡的少妇| 国产成人自拍高清视频在线免费播放| 亚洲丝袜另类动漫二区| 51精品视频一区二区三区| 国产suv精品一区二区三区| 亚洲午夜私人影院| 久久免费精品国产久精品久久久久| 91色porny| 国产一区啦啦啦在线观看| 一区二区视频在线看| 亚洲精品一区二区三区在线观看 | 欧美视频一区二区三区| 国产毛片精品国产一区二区三区| 一区二区三区波多野结衣在线观看| 日韩欧美在线123| 色悠悠亚洲一区二区| 精品在线一区二区| 亚洲综合视频网| 国产欧美日韩三级| 欧美乱妇15p| 99在线精品观看| 狠狠色丁香婷婷综合| 亚洲一区精品在线| 国产情人综合久久777777| 欧美一区二区日韩一区二区| 一本色道久久综合精品竹菊| 国产盗摄视频一区二区三区| 日本系列欧美系列| 亚洲午夜免费电影| 中文字幕一区二区视频| 26uuuu精品一区二区|