freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

aspnet全面掌握visualc實(shí)現(xiàn)udp協(xié)議(編輯修改稿)

2025-09-26 16:31 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ializeComponent 過(guò)程的后面添加下面代碼,下列代碼是定義過(guò)程“ start_server”。此過(guò)程的功能是獲取客戶端對(duì)時(shí)請(qǐng)求數(shù)據(jù),并向客戶端發(fā)送服務(wù)器當(dāng)前時(shí)間和日期。 public void start_server ( ) { while ( true ) { //接收從遠(yuǎn)程主機(jī)發(fā)送到本地 8080端口的數(shù)據(jù) byte[] recData = ( ref receivePoint ) 。 ASCIIEncoding encode = new ASCIIEncoding ( ) 。 //獲得客戶端請(qǐng)求數(shù)據(jù) string Read_str = ( recData ) 。 //提取客戶端的信息,存放到定義為 temp的字符串?dāng)?shù)組中 string[] temp = ( /.ToCharArray ( ) ) 。 //顯示端口號(hào)的請(qǐng)求信息 ( 時(shí)間: + . ToLongTimeString ( ) + 接收信息如下: ) 。 ( 客戶機(jī): + temp[0] ) 。 ( 端口號(hào): + temp[1] ) 。 //發(fā)送服務(wù)器端時(shí)間和日期 byte[] sendData = ( ( ) ) 。 ( 發(fā)送服務(wù)器時(shí)間! ) 。 //對(duì)遠(yuǎn)程主 機(jī)的指定端口號(hào)發(fā)送服務(wù)器時(shí)間 ( sendData , , temp[0] , ( temp[1] ) ) 。 } } 請(qǐng)注意:上述代碼中約定客戶機(jī)程序發(fā)送對(duì)時(shí)請(qǐng)求信息到服務(wù)器的 8080 端口號(hào)。服務(wù)器端程序接收發(fā)送到本地 8080 端口號(hào)的數(shù)據(jù)就完成了數(shù)據(jù)接收。為了能夠讓服務(wù)器端程序知道是那臺(tái)客戶機(jī)提出請(qǐng)求和要把對(duì)時(shí)信息發(fā)送到客戶機(jī)的那個(gè)端口號(hào)上,客戶端程序?qū)Πl(fā)送的對(duì)時(shí)請(qǐng)求信息進(jìn)行了設(shè)計(jì)??蛻舳说膶?duì)時(shí)請(qǐng)求 信息結(jié)構(gòu)為: 計(jì)算機(jī)名稱 + / + 客戶機(jī)接收信息端口號(hào) 這樣如果客戶端計(jì)算機(jī)名稱為: majinhu,接收服務(wù)器端時(shí)間數(shù)據(jù)的端口號(hào)是 8080,則客戶端程序發(fā)送的對(duì)時(shí)請(qǐng)求數(shù)據(jù)就為: majinhu/8080。 服務(wù)器端程序在接收到客戶端對(duì)時(shí)請(qǐng)求數(shù)據(jù),并進(jìn)行分析后,就能夠通過(guò) UdpClient 類的 Send 方法準(zhǔn)確的把服務(wù)器端當(dāng)前的時(shí)間和日期發(fā)送到客戶端指定的端口號(hào)上。這樣客戶端程序通過(guò)讀取指定的端口號(hào),就能夠獲得服務(wù)器端當(dāng)前的時(shí)間和日期,從而以此來(lái)修正客戶端的時(shí)間和日期了。 “ start_server”過(guò)程之后面添加下面代碼,下列代碼是定義“ run”過(guò)程?!?run”過(guò)程的作用是創(chuàng)建一個(gè)線程實(shí)例,并以“ start_server”過(guò)程來(lái)初始化線程實(shí)例。之所以采用線程是因?yàn)榉?wù)器端程序需要不間斷讀取發(fā)送到 8080 端口號(hào),并且 Receive 方法是一個(gè)阻塞式方法。采用線程就是為了保證服務(wù)器端程序正常運(yùn)行: public void run ( ) { //利用本地 8080 端口號(hào)來(lái)初始化一個(gè) UDP網(wǎng)絡(luò)服務(wù) server = new UdpClient ( port ) 。 receivePoint = new IPEndPoint ( new IPAddress ( ip ) , port ) 。 //開(kāi)一個(gè)線程 startServer = new Thread ( new ThreadStart ( start_server ) ) 。 //啟動(dòng)線程 ( ) 。 } 中的 Main 函數(shù)之后添加下列代碼,下列代碼是定義“ Form1_Load”事件,在此事件中將調(diào)用“ run”過(guò)程,這樣當(dāng)服務(wù)器端程序運(yùn)行后,就啟動(dòng)網(wǎng)絡(luò)對(duì)時(shí)服務(wù): private void Form1_Load ( object sender , e ) { //啟動(dòng)對(duì)時(shí)服務(wù) run ( ) 。 } “ Form1_Load”事件之后,添加下列代碼,下列代碼是定義 button1的“ Click”事件,此事件的作用是清除服務(wù)器端程序顯示的日志信息: private void button1_Click ( object sender , e ) { //清除服務(wù) 器端程序日志 ( ) 。 } 中的 Dispose 方法。下列代碼的功能是手動(dòng)收集程序中使用的資源: protected override void Dispose ( bool disposing ) { try { //關(guān)閉線程 ( ) 。 //清除資源 ( ) 。 } catch { } 。 if ( disposing ) { if ( ponents != null ) { ( ) 。 } } ( disposing ) 。 } 至此,在上述步驟都正確完成,【 UDP 對(duì)時(shí)服務(wù)器端】項(xiàng)目的全部工作就完成了。圖 02【 UDP 對(duì)時(shí)服務(wù)器端】運(yùn)行后的界面,在日志信息中記錄了對(duì)時(shí)請(qǐng)求客戶機(jī)的名稱,發(fā)送對(duì)時(shí)數(shù)據(jù)的端口號(hào)以及客戶端請(qǐng)求的時(shí)間: 圖 02:【 UDP 對(duì)時(shí)服務(wù)器端】項(xiàng)目的運(yùn)行界面 五. Visual C#實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)系統(tǒng)之客戶端程序的具體步驟: 客戶端的程序比服務(wù)器端程序要復(fù)雜些,因?yàn)榭蛻舳顺绦虿粌H要往服務(wù)器端發(fā)送對(duì)時(shí)請(qǐng)求信息,接收服務(wù)器端反饋的日期和時(shí)間數(shù)據(jù),還要提取這些時(shí)間和日期信息,并以此來(lái)修改本地端的日期和時(shí)間。參照上面實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)系統(tǒng)服務(wù)器端程序,實(shí)現(xiàn)請(qǐng)求信息的發(fā)送和接收應(yīng)相對(duì)要容易許多。所以客戶端程序的關(guān) 鍵就是根據(jù)獲得的服務(wù)器端日期、時(shí)間數(shù)據(jù)來(lái)修改本地的日期、時(shí)間。在 .Net FrameWork SDK 3705 版本中并沒(méi)有提供修改本地日期和時(shí)間的函數(shù)和類庫(kù),本文的實(shí)現(xiàn)辦法是引入 WinAPI 函數(shù),通過(guò)對(duì)應(yīng)的 WinAPI 函數(shù)來(lái)更正本地時(shí)間和日期的,具體可參閱以下第十三和第十八步。 以下是 Visual C#實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)系統(tǒng)之客戶端程序的具體實(shí)現(xiàn)步驟: Visual Studio .Net。 【文件】 |【新建】 |【項(xiàng)目】后,彈出【新建項(xiàng)目】對(duì)話框。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1