Silverlight下的Socket通訊

2021-06-18 07:27:23 字數 2728 閱讀 1839

在silverlight中進行通訊,只能使用4502-4534之間的埠進行資料傳輸,另外silverlight客戶端會自動向943埠的伺服器端傳送乙個「」的語句請求,然後伺服器端943埠回發以下檔案以許可socket通訊。

<?xml version="

1.0" encoding="

utf-8

" ?>

from>

"*"/>

from>

"4502-4534

" protocol="

tcp"/>

a.現在我們首先來看伺服器端的**,主要分為策略響應步驟和服務響應步驟。

策略步驟一:啟動監聽943埠是否有需要安全策略檔案請求

策略步驟二:如果客戶端請求是,則將安全策略檔案作為bytes傳送給客戶端

服務步驟一:啟動伺服器端,監聽4525埠,是否有socket對話請求

服務步驟二:如果有客戶端請求的連線,則傳送訊息告知客戶端

**如下:

class program

//策略請求監聽

static

void accessthread()

thread.sleep(100);}}

static

void serverthread()}//

根據埠建立socket伺服器端

static socket getsocketserver(int serverport)

//獲取安全策略檔案的byte

static

byte getpolicytoclient()

}

b.其次我們來看客戶端操作,分為以下幾個步驟:

客戶端步驟一:發起伺服器連線請求。

客戶端步驟二:連線伺服器成功,將需要傳送的資料放入緩衝區中,然後非同步向伺服器傳送訊息請求

客戶端步驟三:訊息傳送成功,此時設定乙個新的緩衝區例項,並且發起非同步接收伺服器返回的訊息

客戶端步驟四:獲取到伺服器返回的訊息,關閉socket 

客戶端cs**如下:

public

partial

class mainpage : usercontrol

system.net.sockets.socket socket;

private

void button1_click(object sender, routedeventargs e)

//每發生乙個socket操作都講啟用此方法,操作包括(connect/send/receive/none)

void socketargs_completed(object sender, socketasynceventargs e)

else

if (e.lastoperation == socketasyncoperation.send)

else

if (e.lastoperation == socketasyncoperation.receive)}//

更新ui

public

void dothing(string arg)

//宣告的乙個dothing方法委託

public

delegate

void dothingdele(string arg);

}

客戶端xaml前台**如下:

"

layoutroot

" background="

white

" showgridlines="

true

">

"23" horizontalalignment="

left

" margin="

20,20,0,0

" name="

tbinput

" verticalalignment="

top" width="

243" />

"發 送" height="

Silverlight 下換膚的實現

幸好 nikhil kothari 想了個辦法解決了這個問題。在使用方式上,借鑑了 asp.net 的 theme機制。只要在 silverlight 程式的根目錄下定義乙個 themes目錄,並按要求往其中放入相關的 檔案即可。這裡建議的方式是每乙個控制項乙個單獨的 xaml,其中放了乙個 use...

Silverlight 下換膚的實現

幸好 nikhil kothari 想了個 辦法解決了這個問題。在使用方式上,借鑑了 asp.net 的 theme 機制。只要在 silverlight 程式的根目錄下定義乙個 themes 目錄,並按要求往其中放入相關的 檔案即可。這裡建議的方式是每乙個控制項乙個單獨的 xaml,其中放了乙個 ...

linux下的 so和 a檔案

linux下的.so是基於linux下的動態鏈結,其功能和作用類似與windows下.dll檔案。下面是關於.so的介紹 一 引言 通常情況下,對函式庫的鏈結是放在編譯時期 compile time 完成的。所有相關的物件檔案 object file 與牽涉到的函式庫 library 被鏈結合成乙個...