下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C#.net2.0套接字編程實(shí)例UDPTCP通信
首先從原理上解釋一下采用Socket接口的網(wǎng)絡(luò)通訊,這里以最常用的C/S模式作為范例,首先,服務(wù)端有一個進(jìn)程(或多個進(jìn)程)在指定的端口等待客戶來連接,服務(wù)程序等待客戶的連接信息,一旦連接上之后,就可以按設(shè)計(jì)的數(shù)據(jù)交換方法和格式進(jìn)行數(shù)據(jù)傳輸??蛻舳嗽谛枰臅r刻發(fā)出向服務(wù)端的連接請求。這里為了便于理解,提到了一些調(diào)用及其大致的功能。使用socket調(diào)用后,僅產(chǎn)生了一個可以使用的socket描述符,這時還不能進(jìn)行通信,還要使用其他的調(diào)用,以使得socket所指的結(jié)構(gòu)中使用的信息被填寫完。在使用TCP協(xié)議時,一般服務(wù)端進(jìn)程先使用socket調(diào)用得到一個描述符,然后使用bind調(diào)用將一個名字與socket描述符連接起來,對于Internet域就是將Internet地址聯(lián)編到socket。之后,服務(wù)端使用listen調(diào)用指出等待服務(wù)請求隊(duì)列的長度。然后就可以使用accept調(diào)用等待客戶端發(fā)起連接,一般是阻塞等待連接,一旦有客戶端發(fā)出連接,accept返回客戶的地址信息,并返回一個新的socket描述符,該描述符與原先的socket有相同的特性,這時服務(wù)端就可以使用這個新的socket進(jìn)行讀寫操作了。一般服務(wù)端可能在accept返回后創(chuàng)建一個新的進(jìn)程進(jìn)行與客戶的通信,父進(jìn)程則再到accept調(diào)用處等待另一個連接??蛻舳诉M(jìn)程一般先使用socket調(diào)用得到一個socket描述符,然后使用connect向指定的服務(wù)器上的指定端口發(fā)起連接,一旦連接成功返回,就說明已經(jīng)建立了與服務(wù)器的連接,這時就可以通過socket描述符進(jìn)行讀寫操作了。.NetFrameWork為Socket通訊提供了System.Net.Socket命名空間,在這個命名空間里面有以下幾個常用的重要類分別是:·Socket類這個低層的類用于管理連接,WebRequest,TcpClient和UdpClient在內(nèi)部使用這個類?!etworkStream類這個類是從Stream派生出來的,它表示來自網(wǎng)絡(luò)的數(shù)據(jù)流·TcpClient類允許創(chuàng)建和使用TCP連接·TcpListener類允許監(jiān)聽傳入的TCP連接請求·UdpClient類用于UDP客戶創(chuàng)建連接(UDP是另外一種TCP協(xié)議,但沒有得到廣泛的使用,主要用于本地網(wǎng)絡(luò))下面我們來看一個基于Socket的雙機(jī)通信代碼的C#版本首先創(chuàng)建Socket對象的實(shí)例,這可以通過Socket類的構(gòu)造方法來實(shí)現(xiàn):publicSocket(AddressFamilyaddressFamily,SocketTypesocketType,ProtocolTypeprotocolType);其中,addressFamily參數(shù)指定Socket使用的尋址方案,socketType參數(shù)指定Socket的類型,protocolType參數(shù)指定Socket使用的協(xié)議。下面的示例語句創(chuàng)建一個Socket,它可用于在基于TCP/IP的網(wǎng)絡(luò)(如Internet)上通訊。Sockettemp=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);若要使用UDP而不是TCP,需要更改協(xié)議類型,如下面的示例所示:Sockettemp=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);一旦創(chuàng)建Socket,在客戶端,你將可以通過Connect方法連接到指定的服務(wù)器(你可以在Connect方法前Bind端口,就是以指定的端口發(fā)起連接,如果不事先Bind端口號的話,系統(tǒng)會默認(rèn)在1024到5000隨機(jī)綁定一個端口號),并通過Send方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過Receive從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要使用Bind方法綁定所指定的接口使Socket與一個本地終結(jié)點(diǎn)相聯(lián),并通過Listen方法偵聽該接口上的請求,當(dāng)偵聽到用戶端的連接時,調(diào)用Accept完成連接的操作,創(chuàng)建新的Socket以處理傳入的連接請求。使用完Socket后,使用Close方法關(guān)閉Socket。姓愁可以秀看出攤,以背上許純多方做法包洽含E糧nd件Po叛in來t類建型的滑參數(shù)幼,在遼In樂te牢rn俗et冊中,根TC飽P/捆IP茅使弊用一歉個網(wǎng)胡絡(luò)地儉址和架一個里服務(wù)捧端口恨號來徑唯一接標(biāo)識煤設(shè)備診。網(wǎng)寇絡(luò)地撇址標(biāo)濃識網(wǎng)奪絡(luò)上優(yōu)的特谷定設(shè)死備;真端口您號標(biāo)少識要仍連接污到的壁該設(shè)回備上茶的特削定服怒務(wù)。攏網(wǎng)絡(luò)躬地址拌和服閉務(wù)端億口的超組合上稱拾為終路結(jié)點(diǎn)帽,在止.清NE圍T刪框架砍中正井是由市E住nd誦Po綢in訂t怪類表扶示這偶個終禍結(jié)點(diǎn)礦,它基提供譜表示漠網(wǎng)絡(luò)依資源忠或服狀務(wù)的隸抽象棕,用浩以標(biāo)回志網(wǎng)釀絡(luò)地盲址等尸信息柿。.尾Ne軍t同捐時也虹為每塘個受槍支持刊的地銜址族鞠定義叫了咐En勉dP豬oi痰nt事的燕子代摟;對曠于獲IP云地芹址族努,該高類為帶I辛PE腰nd目Po納in壤t。甚IP讓En威dP裁oi況nt漲類底包含膚應(yīng)用避程序德連接析到主知機(jī)上榴的服吵務(wù)所洽需的蠻主機(jī)唐和端殺口信侵息,用通過燭組合曉服務(wù)支的主蓬機(jī)I廈P地商址和蹤端口速號,墨I(xiàn)P歪En艇dP陶oi練nt疲類極形成俯到服池務(wù)的回連接慈點(diǎn)。掘舊用到刊IP皆En曲dP棋oi王nt轉(zhuǎn)類的瘋時候之就不畢可避近免地幻涉及齊到計(jì)離算機(jī)筒IP圍地址高,S雙ys域te漸m.億Ne肺t命奴名空寫間中館有兩咬種類顧可以進(jìn)得到輩IP已地址漆實(shí)例歉:哄耳·I全PA陣dd物re歇ss門類:橫IP鎮(zhèn)Ad冠dr老es籮s混類包則含計(jì)濱算機(jī)巨在落IP拍網(wǎng)驅(qū)絡(luò)上氏的地疼址。校其P輛ar捆se蓬方法狂可將虧I遇P展地址圖字符懸串轉(zhuǎn)債換為仍I殼PA弱dd潤re塌ss剛實(shí)豈例。劃下面芒的語武句創(chuàng)半建一槳個亮IP傻A(chǔ)d俘dr哪es伐s濤實(shí)例德:傷IP秋Ad臺dr虹es親s窯my臘IP佳=普I道PA舊dd通re亮ss遮.P縮ar犬se芳("響19帖2.凝16黨8.激0.咸1"王);園高分需要隊(duì)知道簡的是翻:S午oc財(cái)ke離t活類支軍持兩玩種基黎本模輝式:辮同步亮和異罪步。鞏其區(qū)爹別在件于:觀在同書步?;攀街胸?,按由塊傳絮輸,墊對執(zhí)德行網(wǎng)屋絡(luò)操責(zé)作的抓函數(shù)稼(如魂S扯en援d字和牲Re繳ce欠iv棄e)沫的調(diào)易用一恒直等敗到所拉有內(nèi)昆容傳耽送操體作完農(nóng)成后艇才將毅控制謹(jǐn)返回越給調(diào)飄用程例序。碼在異猴步?;质街薪铮瞧彀次挥瓊鬏敻?,需乘要指亦定發(fā)滿送的獎開始諒和結(jié)恨束。勻同步?jīng)Q模式述是最隔常用區(qū)的變模式奴,我逝們這泄里的案例子慎也是芒使用椒同步售模式河。專箱下面茶看一管個完訴整的通例子推,c喜li津en帳t向辨se她rv嘴er匯發(fā)送算一段浴測試呆字符遷串,昨se迷rv稻er猶接收餡并顯筑示出芬來,龜給予澇cl探ie鏈nt饑成功優(yōu)響應(yīng)捎。//client端usingSystem;usingSystem.Text;齒us旬in秋g判Sy揪st煎em兵.I雀O;尊us存in現(xiàn)g啦Sy仁st挑em黎.N催et喜;社us野in拖g晴Sy納st津em歡.N虹et珍.S化oc但ke旨ts桿;喂na煙me不sp擊ac杰e寨so革ck敵et賠sa聞mp后le型{鄭cl戰(zhàn)as喚s鴉Cl含as掙s1挖{滴st晶at統(tǒng)ic丈v輔oi廳d勒Ma加in凳()糧{逝tr話y屈{邁in杜t哭p磁or各t純=腰20泊00饞;蠶st幕ri唯ng夫h循os蠢t浙=團(tuán)"1偵27丸.0要.0堆.1紐";磚IP炎Ad振dr她es偵s嚴(yán)ip斬=飲I亦PA案dd極re興ss體.P育ar動se懼(h窗os序t)辟;臣IP吼En體dP糊oi損nt濱i閘pe酷=歪n拋ew龍I還PE涉nd秤Po盲in狼t(銜ip談,己po配rt遇);恢//帥把i猴p和蠻端口灶轉(zhuǎn)化賺為I坊PE歌nd奴Po圖in挪t實(shí)吹例加So補(bǔ)ck圈et令c共=殲n攻ew躺S五oc舅ke旺t(寸Ad矩dr度es奶sF品am拔il材y.臺In憂te洪rN馬et孤wo躺rk賢,令So筑ck式et凱Ty騾pe斬.S捐tr業(yè)ea猜m,傘P盒ro嗓to蕉co暴lT惠yp妖e.吉Tc傅p)僻;/仇/創(chuàng)劉建一顆個S犯oc仍ke校t禁Co咸ns漏ol送e.凝Wr悶it馬e夏Li爪ne叮("木Co施nn央et遍in緣g.廟..閉")澤;笑c.竹Co巧nn次ec菠t(計(jì)ip箏e)獨(dú);/阿/連指接到姻服務(wù)郊器壯st愧ri資ng挪s惑en奸dS懂tr伸=貞"惑he置ll撕o!權(quán)Th烘is遍i扣s貍a扛so注ck柴et換t犯es歉t"推;少by煩te寬[]纏b棕s扣=節(jié)En源co洲di負(fù)ng獵.A碰SC旁II籠.G箭et伸By蹦te隆s(狹se除nd愉St包r)童;賢Co艘ns晌ol狼e.侄Wr奔it儀eL鹽in殿e(野"S灶en偽d惜Me柿ss箱ag飛e"澇);述c.悠Se從nd蝶(b士s,鋤b銜s.伴Le秋ng密th掘,吊0)寸;/競/發(fā)遵送測階試信郊息刑st齡ri賭ng裁r泡ec倚vS真tr西=館"陷";釣by凝te柄[]義r堵ec群vB饒yt迅es鍋=君n劫ew眨b渡yt爐e[爐10森24箭];陵in堂t脊by彼te濤s;光by馳te哄s競=蠅c.向Re洗ce送iv奔e(并re冒cv剖By亞te誰s,言r笛ec詠vB騙yt資es天.L倘en棗gt恩h,原0急);腳//漂從服嫩務(wù)器光端接算受返責(zé)回信巡息表re種cv兼St麻r貓+=化E謎nc舌od折in陜g.離AS羨CI擊I.軟Ge西tS雨tr悉in討g(眠re刃cv謝By梳t(yī)e早s,雅0滴,買by授te球s)抽;惕Co飄ns戴ol門e.惱Wr鞭it何eL久in士e(釋"C黎li雷en峽t悠Ge綢t在Me憲ss量ag階e:法{0兵}"菠,印re撇cv其St淘r)雞;/寇/顯悟示服庸務(wù)器險(xiǎn)返回工信息徐c.疲Cl精os宅e(擱);供}蒙ca誤tc濃h鴨(A視rg羽um狹en頃tN配ul大lE煎xc某ep陷ti逮on控e陸)鎮(zhèn){接Co貞ns隨ol膚e.閘Wr恢it晶eL犧in詳e(扎"A省rg攻um龍en銜tN寬ul晉lE攻xc眉ep愁ti累on折:徑{0辰}"誰,犁e)曲;疏}墾ca妥tc喬h壺(S哄oc富ke甜tE悄xc緩ep旺ti速on澤e駛)足{堡Co跌ns項(xiàng)ol劉e.書Wr庸it緣eL墊in敏e(普"S莖oc延ke當(dāng)tE陵xc奮ep翼ti出on醒:筐{0劈}"仍,姐e)均;砍}燭Co床ns毯ol捐e.穴Wr君it今eL籌in介e(填"P腰re悉ss芳E落nt掘er蝴t堡o破Ex梯it僑")仇;老Co刑ns閥ol杜e.暴Re消ad槳Li詞ne胃()務(wù);躍}差}誰}蝴//惕se營rv誰er午端憐us約in佩g忘Sy位st孫em恐;趣us斑in鐵g司Sy按st尖em灰.T淋ex厭t;鉆us友in俊g盯Sy塵st鏟em吧.I伶O;坡us臺in四g張Sy名st冠em社.N甘et佛;廊us渣in絲g名Sy貓st吸em廳.N顯et冊.S購oc簽ke壘ts賠;貢na最me饞sp裕ac侵e分Pr維oj膏ec搜t1郵{拘cl屋as廣s潑Cl志as丹s2僅{過st秋at冤ic吧v固oi裹d振Ma器in司()卡{役tr名y聚{靠in逝t稍po畫rt逆=駁2虜00扮0;陷st雄ri族ng獎h瓜os斑t掘=嶼"1富27把.0窮.0烤.1夕";攔IP咸Ad稈dr當(dāng)es渠s寧ip齊=以I沖PA溉dd俗re甚ss賴.P丸ar夕se聾(h填os準(zhǔn)t)將;票IP憶En藥dP題oi毛nt夜i半pe水=滲n貝ew沃I境PE搭nd息Po敬in薄t(根ip狹,設(shè)po血rt然);勻So角ck權(quán)et漸s欺=摧n異ew喝S幫oc米ke亞t(成Ad巴dr龜es暫sF詞am公il罪y.槍In纏te饅rN勞et茄wo妨rk晉,系So鳴ck予et筑Ty揮pe辭.S糖tr握ea哲m,額P屢ro宿to土co酷lT毫yp夕e.糊Tc膨p)乖;/逐/創(chuàng)科建一幣個S繳oc寒ke棚t類岡s.京Bi各nd滴(i閘pe王);幼//鍵綁定深20夢00閱端口形s.提Li怪st娃en售(0狼);市//亂開始臟監(jiān)聽由Co田ns島ol狡e.絮Wr蘋it吹eL草in宇e(擇"W劈ai萬t含fo真r楚co型nn輔ec河t"能);報(bào)So畏ck游et叫t諷em呆p墓=即s.嚴(yán)Ac懲ce棋pt禽()亡;/糟/為訊新建知連接煤創(chuàng)建焰新的暗So態(tài)ck北et呀。顧C(jī)o悠ns港ol鼠e.微Wr撲it功eL旁in侄e(侵"G藥et邊a園c蓋on薦ne辯ct寫")腫;設(shè)st油ri便ng從r嫁ec傷vS勤tr新=柜"燭";劍by程te紅[]獻(xiàn)r雄ec覽vB壩yt沙es巧=層n腦ew勾b晚yt欲e[感10勒24戴];齡in辭t挑by衛(wèi)te炕s;旁by歸te弄s碑=籠te毯mp與.R煌ec池ei疤ve刑(r揉ec乖vB殲yt論es項(xiàng),鞠re機(jī)cv米By輕te貪s.悼Le耍ng閘th島,擾0)攜;/誓/從隊(duì)客戶介端接怪受信藥息弦re歇cv風(fēng)St夜r局+=期E黨nc育od宿in薦g.欠AS句CI茫I.燃Ge漆t(yī)S售tr蚊in斤g(模re君cv濫By政te況s,營0冒,勝by剖te武s)運(yùn);蛋Co斬ns麗ol借e.捏Wr敢it努eL靠in晴e(咬"S溜er妹ve兄r縫Ge窄t括Me慢ss纏ag榴e:前{0未}"剝,r油ec棄vS屯tr太);產(chǎn)//決把客久戶端字傳來棍的信桑息顯支示出炭來賓st奶ri香ng水s呢en煤dS耐tr棕=角"繭Ok收!C苦l(xiāng)i僚en臭t柱Se晨nd諸M窮es坦sa事ge夢S詢uc要es獵sf海ul遮!"浴;搜by漁te撲[]竭b鳥s隨=丸En潔co扣di吊ng唉.A媽SC束II雷.G婚et們By雷te夕s(教se黎nd滑St醋r)謎;私te償mp聯(lián).S棵en倆d(農(nóng)bs極,唐bs資.L絕en百gt莖h,扁0幟);抽//遠(yuǎn)返回弓客戶傻端成相功信潑息欄te裳mp夕.C甩lo揚(yáng)se軍()租;械s.季Cl啟os段e(硬);寧}完ca線tc我h純(A擱rg濫um穗en洞tN鉗ul叛lE找xc茂ep警ti橫on常e絕)斧{磨Co柄ns射ol尺e.兇Wr探it嘴eL兄in勇e(劑"A產(chǎn)rg塔um男en行tN期ul面lE坡xc段ep正ti鍵on夏:蹲{0奇}"葉,臨e)劍;鈴}霜ca衣tc排h逗(S敞oc要ke傾tE要xc免ep崗ti織on惑e貸)死{濾Co趨ns曠ol扔e.工Wr加it而eL防in獨(dú)e(難"S惱oc便ke元tE三xc垮ep脫ti照on看:湖{0關(guān)}"遼,戴e)垃;剖}吵Co堤ns詠ol尾e.蹄Wr默it寸eL岡in絞e(殿"P礎(chǔ)re經(jīng)ss右E瞎nt鎮(zhèn)er枕t敞o犯Ex自it巾")桿;化Co勞ns凝ol續(xù)e.呀Re芳ad幫Li舒ne辦()斤;怎}羽}拔}上面的例子是用的Socket類,System.Net.Socket命名空間還提供了兩個抽象高級類TCPClient和UDPClient和用于通訊流處理的NetWorkStream,讓我們看下例子客戶端TcpClienttcpClient=newTcpCLient(主機(jī)IP,端口號);NetworkStreamns=tcp.Client.GetStream();服務(wù)端TcpListenertcpListener=newTcpListener(監(jiān)聽端口);tcpListener.Start();TcpClienttcpClient=tcpListener.AcceptTcpClient();NetworkStreamns=tcpClient.GetStream();服務(wù)端用TcpListener監(jiān)聽,然后把連接的對象實(shí)例化為一個TcpClient,調(diào)用TcpClient.GetStream()方法,返回網(wǎng)絡(luò)流實(shí)例化為一個NetworlStream流,下面就是用流的方法進(jìn)行Send,Receive如果是UdpClient的話,就直接UdpClient實(shí)例化,然后調(diào)用UdpClient的Send和Receive方法,需要注意的事,UdpClient沒有返回網(wǎng)絡(luò)流的方法,就是說沒有GetStream方法,所以無法流化,而且使用Udp通信的時候,不要服務(wù)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民間借貸論文文獻(xiàn)綜述與綜述寫作合同
- 2025年度配套服務(wù)用房租賃合同解除協(xié)議
- 二零二五年度木板行業(yè)人才培養(yǎng)與技術(shù)交流合同
- 二零二五年度木門產(chǎn)品線上線下營銷推廣合同范本
- 2025年度冷鏈運(yùn)輸車輛租賃及運(yùn)輸服務(wù)合同3篇
- 二零二五年度合伙經(jīng)營圖書書店合同書模板2篇
- 2025年建筑用磚采購與質(zhì)量控制管理合同3篇
- 二零二五年度排水溝施工工程進(jìn)度款支付及結(jié)算合同
- 課題申報(bào)參考:農(nóng)村父母養(yǎng)育倦怠所致兒童手游依賴之危害及其矯正機(jī)制研究
- 二零二五版耐火材料行業(yè)環(huán)保設(shè)施建設(shè)合同4篇
- 電纜擠塑操作手冊
- 浙江寧波鄞州區(qū)市級名校2025屆中考生物全真模擬試卷含解析
- 2024-2025學(xué)年廣東省深圳市南山區(qū)監(jiān)測數(shù)學(xué)三年級第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- IATF16949基礎(chǔ)知識培訓(xùn)教材
- 【MOOC】大學(xué)生創(chuàng)新創(chuàng)業(yè)知能訓(xùn)練與指導(dǎo)-西北農(nóng)林科技大學(xué) 中國大學(xué)慕課MOOC答案
- 勞務(wù)派遣公司員工考核方案
- 基礎(chǔ)生態(tài)學(xué)-7種內(nèi)種間關(guān)系
- 2024年光伏農(nóng)田出租合同范本
- 《阻燃材料與技術(shù)》課件 第3講 阻燃基本理論
- 2024-2030年中國黃鱔市市場供需現(xiàn)狀與營銷渠道分析報(bào)告
- 新人教版九年級化學(xué)第三單元復(fù)習(xí)課件
評論
0/150
提交評論