站點部署、配置-第十天代碼asp net_第1頁
站點部署、配置-第十天代碼asp net_第2頁
站點部署、配置-第十天代碼asp net_第3頁
站點部署、配置-第十天代碼asp net_第4頁
站點部署、配置-第十天代碼asp net_第5頁
免費預覽已結束,剩余26頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

北京傳智播客教育聊天程序

(基于Socket,Thread)講師:王承偉理解委托理解簡單的IO前提:簡單回顧委托什么是委托?(安全的函數指針)通俗:就是一個能存放符合某種格式(方法簽名)的方法的指針的清單

委托創建方式準備一個方法:stringHelloU(stringuName){//方法代碼}聲明委托:delegate返回值類型委托類型名(參數) 例子:delegatestringDGSayHi(stringuName);創建委托對象:DGSayHidgSay=newDGSayHi(HelloU);或者:DGSayHidgSay=HelloU;//newDGSayHi(HelloU);追加方法:bine(,)刪除方法:dgSay-=HelloU3;委托調用方式dgSay("binggo");//dgSay.Invoke("binggo");畫圖委托作為參數聲明使用委托做參數的方法:

voidIntenationalSayHi(stringuName,DGSayHidgSh)

{//業務代碼

dgSh(uName);//業務代碼

}調用執行: 傳委托對象:

InternationalSayHi("biggo",dgSay); 直接傳有和委托相同方法簽名的方法:

InternationalSayHi("biggo",HelloU);

InternationalSayHi("biggo",newDGSayHi(HelloU));委托原理*文件流FileStream文件流FileStream對象表示在磁盤或網絡路徑上指向文件的流使用

FileStream

類對文件系統上的文件進行讀取、寫入、打開和關閉操作FileStream

對輸入輸出進行緩沖,從而提高性能為什么不用File.ReadAllText()?好處之一就是:對于大文件來說,FileStream可以對文件采取分段讀取,即每次只讀取一部分到內存。字符串和字節數組轉換字節數組轉換成字符串:StringSystem.Text.Encoding.UTF8.GetString(byte[])字符串轉換成字節數組:byte[]System.Text.Encoding.UTF8.GetBytes(String)多線程為什么要用多線程讓計算機"同時"做多件事情,節約時間。后臺運行程序,提高程序的運行效率,也不會使主界面出現無響應的情況。多線程可以讓一個程序“同時”處理多個事情。計算機cpu大部分時間處于空閑狀態,浪費了cpu資源。Demo1:單線程帶來的問題程序1程序2線程1線程2線程3線程1線程2線程3多線程進程與線程一個進程至少有一個線程同一個進程中的多個線程之間可以"并發"執行.net中如何實現多線程1線程肯定也是要執行一段代碼的。所以要產生一個線程,必須先為該線程寫一個方法,這個方法中的代碼就是該線程運行所要執行的代碼。(找個人來做一件事情)線程啟動時,通過委托調用該方法。 (委托的好處)(線程啟動時,調用傳過來的委托,委托就會執行相應的方法,實現線程執行方法).net中如何實現多線程2產生一個線程的4步驟:編寫產生線程所要執行的方法引用System.Threading命名空間實例化Thread類,并傳入一個指向線程所要運行方法的委托。(這時候這個線程已經產生,但是還沒有運行)調用Thread實例的Start方法,標記該線程可以被CPU執行了,但具體執行時間由CPU決定。Demo2:兩個線程同時運行(畫圖)前臺線程和后臺線程前臺線程:只有所有的前臺線程都關閉才能完成程序關閉。后臺線程:只要所有的前臺線程結束,后臺線程自動結束。Thread類的一些重要成員(*)Start()啟動線程Abort()終止線程Thread.Sleep(1)靜態方法,可以使當前線程停止一段時間運行Name線程名Thread.CurrentThread獲得當前的線程引用數據的插入Demo3:線程中如何訪問控件Demo4:執行帶參數的方法線程的調度方式*1.非搶占式調度:

指某個線程在運行時不會被操作系統強制暫停,它可以持續地運行直至運行告一段落井主動地交出運行權。在這樣的調度模式之下,線程的運行就完全是單隊列的,并且可能產生惡意程序長期霸占運行權的情況。而且一旦一個程序死了,那么整個電腦就只好重啟啦~~!2.搶占式調度:

指每個線程都只有極少的運行時間(在Windows內核模式下這個時間不會超過20ms),而當時間用完時該線程就會被強制暫停,保存上下文并把CPU運行權利交給下一個線程,這樣調度的結果就是所有的線程都在被快速地切換運行,使得使用者感覺所有的線程在"并行"運行。SOCKET網絡編程Socket相關概念socket的英文原義是“孔”或“插座”。作為進程通信機制,取后一種意思。通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。(其實就是兩個程序通信用的。)socket非常類似于電話插座。以一個電話網為例。電話的通話雙方相當于相互通信的2個程序,電話號碼就是IP地址。任何用戶在通話之前,首先要占有一部電話機,相當于申請一個socket;同時要知道對方的號碼,相當于對方有一個固定的socket。然后向對方撥號呼叫,相當于發出連接請求。對方假如在場并空閑,拿起電話話筒,雙方就可以正式通話,相當于連接成功。雙方通話的過程,是一方向電話機發出信號和對方從電話機接收信號的過程,相當于向socket發送數據和從socket接收數據。通話結束后,一方掛起電話機相當于關閉socket,撤消連接。Socket相關概念在Internet上有很多這樣的主機,這些主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務(應用程序)。例如:http使用80端口ftp使用21端口smtp25端口有兩種類型:流式Socket(STREAM):

是一種面向連接的Socket,針對于面向連接的TCP服務應用,安全,但是效率低;數據報式Socket(DATAGRAM):

是一種無連接的Socket,對應于無連接的UDP服務應用.不安全(丟失,順序混亂,在接收端要分析重排及要求重發),但效率高.Socket一般應用模式(服務器端和客戶端)1.服務端ingsocket開始監聽端口(負責監聽客戶端連接信息)

2.客戶端clientsocket連接服務端指定端口(負責接收和發送服務端消息)

3.服務端ingsocket監聽到客戶端連接,創建connectionsocket。(負責和客戶端通信)1.2.3.負責監聽‘連接請求’的套接字客戶端套接字負責和客戶端通信的套接字Socket一般應用模式(服務器端和客戶端)服務器端的Socket(至少需要兩個)一個負責接收客戶端連接請求(但不負責與客戶端通信)每成功接收到一個客戶端的連接便在服務端產生一個對應的負責通信的Socket在接收到客戶端連接時創建.為每個連接成功的客戶端請求在服務端都創建一個對應的Socket(負責和客戶端通信).客戶端的Socket客戶端Socket必須指定要連接的服務端地址和端口。通過創建一個Socket對象來初始化一個到服務器端的TCP連接。

Socket的通訊過程服務器端:申請一個socket綁定到一個IP地址和一個端口上開啟偵聽,等待接授連接客戶端:申請一個socket連接服務器(指明IP地址和端口號)服務器端接到連接請求后,產生一個新的socket(端口大于1024小于65535)與客戶端建立連接并進行通訊,原監聽socket繼續監聽。連接通過構造函數完成。

publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,ProtocolTypeprotocolType)AddressFamily

成員指定

Socket

用來解析地址的尋址方案。例如,InterNetwork

指示當

Socket使用一個IP版本4地址連接。SocketType

定義要打開的

Socket

的類型Socket

類使用

ProtocolType

枚舉向WindowsSocketsAPI

通知所請求的協議Socket的構造函數

如:mySocket=newSocket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.Tcp);Demo1:監聽注意:至少要定義一個要連接的遠程主機的IP和端口號。端口號必須在1和65535之間,最好在1024以后。要連接的遠程主機必須正在監聽指定端口,也就是說你無法隨意連接遠程主機。如:IPAddressaddr=IPAddress.Parse("");IPEndPointendp=newIPEndPoint(addr,10001); 服務端先綁定:eSocket.Bind(endp) 客戶端再連接:clientSocket.Connect(endp)注意:一個Socket一次只能連接一臺主機。Socket關閉后無法再次使用。每個Socket對象只能一臺遠程主機連接.如果你想連接到多臺遠程主機,你必須創建多個Socket對象。------------------相關類--------------------------IPAddress類:包含了一個IP地址IPEndPoint類:包含了一對IP地址和端口號--------------------方法們------------------------------Socket():創建一個SocketBind():綁定一個本地的IP和端口號(IPEndPoint)Listen():讓Socket偵聽傳入的連接嘗試,并指定偵聽隊列容量Connect():初始化與另一個Socket的連接Accept():接收連接并返回一個新的socketSend():輸出數據到SocketReceive():從Socket中讀取數據Close():關閉Socket(銷毀連接)Socket方法Demo2:發送文字信息Socket通信基本流程圖基于TCP的Socket編程TCPservice:可靠的字節流傳輸

processTCPwithbuffers,variablessocket由軟件工程師控制由操作系統控制processTCPwithbuffers,variablessocketinternetclientserverSocket()Connect()Socket()Bind()Listen()accept()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論