




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用C#實(shí)現(xiàn)多線程Socket的通信我們把在Windows下同時(shí)執(zhí)行的多個(gè)程序中的任何一個(gè)稱之為進(jìn)程。在操作系統(tǒng)的作用下,任何一個(gè)進(jìn)程都認(rèn)為自己是獨(dú)立的,都認(rèn)為自己擁有整臺電腦全部的資源,比如內(nèi)存、CPU等,它們并不知道其他進(jìn)程正在與它分享這些資源,所以每個(gè)進(jìn)程不會去訪問另一個(gè)進(jìn)程的資源。這樣做的好處是一個(gè)進(jìn)程無法破壞另一個(gè)進(jìn)程,但缺點(diǎn)是進(jìn)程之間的信息很難共享。雖然每個(gè)進(jìn)程都認(rèn)為自己擁有全部CPU資源,但實(shí)際并不是這樣,系統(tǒng)把CPU資源以時(shí)間片為單位,按特定的算法進(jìn)行分配。在分配時(shí)間片的時(shí)候,系統(tǒng)并不是按進(jìn)程來分配而是按線程來進(jìn)行分配,也就是說只有線程才有權(quán)得到CPU資源。我們可以認(rèn)為線程就是一
2、段可以被執(zhí)行的代碼序列,在每一個(gè)進(jìn)程內(nèi)部,至少有一個(gè)線程,所有進(jìn)程的運(yùn)行其實(shí)是進(jìn)程內(nèi)部的線程被執(zhí)行而已,這就是進(jìn)程能獲得時(shí)間片的原因。我們創(chuàng)建的所有程序內(nèi)部都有一個(gè)線程,在編寫程序時(shí)并不需要做什么特殊處理,但我們可以通過編寫代碼讓程序內(nèi)部有多個(gè)線程,我們把包含兩個(gè)或兩個(gè)以上的線程稱之為多線程程序。1Socket基本原理在C#中MS為我們提供了System.Sockets命名空間,程序員可以通過socket來發(fā)送和接收網(wǎng)絡(luò)上的數(shù)據(jù)。我們可以把它理解成是一個(gè)API,有了它就可以通過這個(gè)接口訪問網(wǎng)絡(luò)從而省去了很多復(fù)雜的操作。要通過互聯(lián)網(wǎng)進(jìn)行通信,至少需要一對套接字,它是通信主機(jī)之間的端點(diǎn),由它構(gòu)成了
3、單個(gè)主機(jī)內(nèi)及整個(gè)網(wǎng)絡(luò)間的編程界面。我們把運(yùn)行于客戶機(jī)端的稱之Clientsocket,運(yùn)行于服務(wù)器端的稱之為ServerSocket。它的連接過程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)。2Socket通信過程的實(shí)現(xiàn)2.1服務(wù)器端申請一個(gè)Socket,定義到一個(gè)IP地址和一個(gè)端口上開啟偵聽。每成功接受一個(gè)客戶端的鏈接便在服務(wù)端產(chǎn)生一個(gè)對應(yīng)的Socket,在接收客戶端連接時(shí)創(chuàng)建責(zé)和對應(yīng)的客戶端通信。intrecv;/用于表示客戶端發(fā)送的信息長度byte口data二newbyte1024;/用于緩存客戶端所發(fā)送的信息IPEndPointipep=newIPEndPoint(IPAddre
4、ss.Any,9050);/定義一網(wǎng)絡(luò)端點(diǎn)Socketnewsock=newSocketAddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);/定義一個(gè)Socketnewsock.Bind(ipep);/Socket與本地的一個(gè)終結(jié)點(diǎn)相關(guān)聯(lián)IPEndPointsender=newIPEndPoint(IPAddress.Any,0);/定義要發(fā)送的計(jì)算機(jī)的地址recv=newsock.ReceiveFrom(data,refRemote);/接受數(shù)據(jù)newsock.SendTo(data,data.Length,Socket
5、Flags.None,Remote);/發(fā)送信息2.2客戶端申請一個(gè)Socket,連接服務(wù)器(必須指明IP地址和端口號),通過創(chuàng)建一個(gè)Socket對象來初始化一個(gè)服務(wù)器端的TCP連接:byte口data二newbyte1024;定義一個(gè)數(shù)組用來做數(shù)據(jù)的緩沖區(qū)stringinput,stringDataIPEndPointipep=newIPEndPointIPAddress.Parse127.0.0.r),9050);/本機(jī)預(yù)使用的IP和端口server.SendTo(data,data.LengthSocketFlags.None,ipep);/將數(shù)據(jù)發(fā)送到指定的終結(jié)點(diǎn)data二newbyt
6、e1024intrecv=server.ReceiveFromdata,refRemote);/接受來自服務(wù)器的數(shù)據(jù)2.3服務(wù)器服務(wù)器接到連接請求后,產(chǎn)生一個(gè)新的Socket(端口大于1024)與客戶端建立連接并進(jìn)行通訊,原偵聽Socket繼續(xù)偵聽。每個(gè)服務(wù)打開一個(gè)socket,并綁定到一個(gè)端口上,不同的端口對應(yīng)不同的服務(wù)(應(yīng)用程序)。3結(jié)語許多Internet服務(wù)都可以見到Socket的蹤影,如Telnet、Http、Email、Echo等,這些服務(wù)盡管通訊協(xié)議Protocol的定義不同,但是其基礎(chǔ)的傳輸都是采用的Socket。針對Socket編程,框架的Socket類是Winsock32API提供的套接字服務(wù)的托管代碼版本。其中為實(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司沉浸式展廳策劃方案
- 公司組織轟趴活動方案
- 公司文化圈策劃方案
- 公司月刊創(chuàng)刊策劃方案
- 公司歡迎儀式活動方案
- 公司老干部活動方案
- 公司激情文化活動方案
- 公司來新人了活動方案
- 公司匯演暖場活動方案
- 公司旅游年會策劃方案
- AI賦能與素養(yǎng)導(dǎo)向:初中英語智慧課堂的融合實(shí)踐研究
- 《2025年危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)執(zhí)法檢查重點(diǎn)事項(xiàng)指導(dǎo)目錄》解讀與培訓(xùn)
- 2025全國交通運(yùn)輸行業(yè)職業(yè)技能競賽學(xué)生組技術(shù)方案
- 常用儀表使用方法鐵道信號綜合實(shí)訓(xùn)課件
- 2025云南黃金礦業(yè)集團(tuán)股份限公司招聘114人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 預(yù)防職務(wù)犯罪交流課件
- 2025年初一下冊語文-課內(nèi)現(xiàn)代文復(fù)習(xí)18課.《井岡翠竹》(教師版)
- 人工智能應(yīng)用產(chǎn)業(yè)園及配套基礎(chǔ)設(shè)施項(xiàng)目可行性研究報(bào)告(范文模板)
- 未成年人權(quán)益保護(hù)法律解析
- 藥品售后服務(wù)承諾書示例
- 2025年南模中學(xué)自招試題及答案
評論
0/150
提交評論