• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Socket在C#程序中的應用

      2014-03-20 07:18:08許銳炮
      科技視界 2014年21期
      關鍵詞:端口號服務器端網絡通信

      許銳炮

      (民航汕頭空管站 技術保障部,廣東 揭東515558)

      0 引言

      當前網絡通信日益應用廣泛,以民航汕頭空管站為例,單業(yè)務網就超過5 個,而信息化集中程度越來越多的同時,分布式系統(tǒng)之間的信息傳輸也成為一個研究課題。 而對于傳統(tǒng)的TCP/IP 協(xié)議來說,TCP能提供一種可靠的、有連接的數(shù)據(jù)流服務,IP 協(xié)議則能通過識別IP 地址實現(xiàn)網絡個體的互相通信, 相關文獻也將兩者稱為底層網絡通信。而對比之下,已經成熟應用的Socket 中間件便可以以應用程序的方式存在于各大網絡分布式系統(tǒng),應用日趨廣泛。因此,探討Socket 的運行機制及應用對相關網絡編程和技術維護有一定意義。本文將從實際出發(fā),介紹其在C# 程序編寫中的相關技術及特點。

      1 Socket 運行機制

      Socket 是應用層與TCP/IP 協(xié)議族通信的中間軟件抽象層,它是一組接口。 在設計模式中,Socket 作為一個門面模式把復雜的TCP/IP 協(xié)議族隱藏在Socket 接口后面,對開發(fā)人員來說,一組簡單的接口就是全部,讓Socket 去組織數(shù)據(jù),以符合指定的協(xié)議。 它主要由IP 地址和端口號組成。 在TCP/IP 網絡協(xié)議中, 基于服務器客戶端模式的通信上,建立Socket 連接至少需要一對套接字,其中一個運行于客戶端,稱為ClientSocket , 另一個運行于服務器端, 稱為ServerSocket 。 對于ServerSocket 來說主要用于服務器監(jiān)聽, 服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網絡狀態(tài),等待客戶端的連接請求。一旦有請求或者相關命令信息,立即響應。而對于ClientSocket 來說將主動向服務器端套接字發(fā)出連接請求。因此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號, 然后就向服務器端套接字提出連接請求。當服務器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求時,就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發(fā)給客戶端,一旦客戶端確認了此描述,雙方就正式建立連接。而服務器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請求。

      2 Socket 在C# 編程中的機制

      2.1 C# 中的Socket 類

      C# Socket 類為網絡通信提供了一套豐富的方法和屬性。 Socket類允許開發(fā)人員使用ProtocolType 枚舉中所列出的任何一種協(xié)議執(zhí)行異步和同步數(shù)據(jù)傳輸。 如果應用程序在執(zhí)行期間只需要一個線程。對于面向連接的協(xié)議的TCP 協(xié)議通信, 服務器可以使用Listen 方法偵聽連接。 Accept 方法則處理任何傳入的連接請求,并返回可用于與遠程主機進行數(shù)據(jù)通信的Socket。 同時可以使用此返回的Socket 來調用Send 或Receive 方法。 調用Bind 方法后便可以要指定本地IP地址和端口號。連接偵聽主機,則可以調用Connect 方法。在數(shù)據(jù)通信上,主要用Send 或Receive 方法。

      對 于TCP/IP 的 通 信 在C# 中 可 使 用 Socket、BeginConnect 和EndConnect 方法來連接偵聽主機。 通過使用BeginSend 和EndSend方法,或者使用BeginReceive 和EndReceive 方法,可以進行異步數(shù)據(jù)通信。 與此同時,使用BeginAccept 和EndAccept 處理傳入的連接請求。

      而在實際應用中,C# 的Socket 經常需要與多線程配合以解決異步傳輸問題。C# 支持通過多線程并行地執(zhí)行代碼,一個線程有它獨立的執(zhí)行路徑,能夠與其它的線程同時地運行。一個C# 程序開始于一個單線程,這個單線程是被CLR 和操作系統(tǒng)(也稱為“主線程”)自動創(chuàng)建的,并具有多線程創(chuàng)建額外的線程。

      2.2 實際應用

      作為典型的C/S 模式結構設計,一般情況下包括服務器端軟件設計和客戶端軟件設計,因此服務器端軟件與客戶端軟件不可避免需要對其進行網絡通信編程。以客戶端軟件設計為例,Socket 在C# 中則可以通過以下實現(xiàn):

      private IPEndPoint ServerInfo;

      private Socket ClientSocket;

      private Byte[] MsgBuffer;//信息接收緩存

      private Byte[] MsgSend; //信息發(fā)送存儲

      ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

      MsgBuffer = new Byte[65535];

      MsgSend = new Byte[65535];

      this.UserName.Text =Environment.MachineName;

      ServerInfo = new IPEndPoint (IPAddress.Parse(this.ServerIP.Text),Convert.ToInt32(this.ServerPort.Text));

      ClientSocket.Connect(ServerInfo);

      ClientSocket.Send (Encoding.Unicode.GetBytes (" 用 戶: " + this.UserName.Text + " 進入系統(tǒng)! "));

      ClientSocket.BeginReceive (MsgBuffer, 0, MsgBuffer.Length,SocketFlags.None, new AsyncCallback(ReceiveCallBack), null);

      3 結束語

      本文討論了Socket 的運行機制以及其在C# 編程中的設計以及相關技術功能,Socket 作為一種應用程序接口其在實際應用中將底層的相關通信協(xié)議等各種技術封裝在程序背后, 為開發(fā)人員提供了快速、高效的開發(fā)方式。 討論其運行機制,對開發(fā)和技術維護有實際意義。

      [1]胡晶晶,魯漫紅.基于Java Socket 的聊天室系統(tǒng)設計與實現(xiàn)[J].微處理機,2010,5:66-70.

      [2]周譚凱,馬玉祥.網絡通信編程架構研究[J].電子科技,2005(12).

      [3]寇海洲,宗慧.利用Socket 實現(xiàn)被動方式實時提醒系統(tǒng)設計[J].淮陰工學院學報,2008(03).

      猜你喜歡
      端口號服務器端網絡通信
      在Docker容器中安裝應用程序
      基于網絡通信的智能照明系統(tǒng)設計
      電子制作(2019年15期)2019-08-27 01:11:48
      網絡通信中信息隱藏技術的應用
      基于網絡通信的校園智能音箱設計
      電子制作(2018年1期)2018-04-04 01:48:30
      淺析異步通信層的架構在ASP.NET 程序中的應用
      成功(2018年10期)2018-03-26 02:56:14
      談計算機網絡通信常見問題及技術發(fā)展
      電子制作(2017年17期)2017-12-18 06:41:06
      淺談以java為基礎的Socket通信簡介及實現(xiàn)
      青春歲月(2017年5期)2017-04-20 18:34:23
      在Windows中安裝OpenVPN
      Winsock編程在《計算機網絡基礎》教學中的應用
      基于Android系統(tǒng)的互動展示APP的研究與設計
      东兰县| 诏安县| 亚东县| 卓尼县| 千阳县| 新昌县| 岢岚县| 长葛市| 开远市| 扎赉特旗| 保康县| 佛学| 芜湖县| 黄冈市| 萍乡市| 久治县| 盱眙县| 江川县| 崇信县| 张家口市| 邓州市| 阜宁县| 兴仁县| 宜宾市| 太白县| 鄂托克旗| 花垣县| 辽宁省| 天镇县| 新巴尔虎右旗| 德钦县| 遂溪县| 方正县| 桐乡市| 鹤峰县| 察雅县| 若尔盖县| 芒康县| 宁阳县| 广元市| 江都市|