在silverlight中進行通訊,只能使用4502-4534之間的埠進行資料傳輸,另外silverlight客戶端會自動向943埠的伺服器端傳送乙個「」的語句請求,然後伺服器端943埠回發以下檔案以許可socket通訊。
<?xml version="a.現在我們首先來看伺服器端的**,主要分為策略響應步驟和服務響應步驟。1.0" encoding="
utf-8
" ?>
from>
"*"/>
from>
"4502-4534
" protocol="
tcp"/>
策略步驟一:啟動監聽943埠是否有需要安全策略檔案請求
策略步驟二:如果客戶端請求是,則將安全策略檔案作為bytes傳送給客戶端
服務步驟一:啟動伺服器端,監聽4525埠,是否有socket對話請求
服務步驟二:如果有客戶端請求的連線,則傳送訊息告知客戶端
**如下:
class programb.其次我們來看客戶端操作,分為以下幾個步驟://策略請求監聽
static
void accessthread()
thread.sleep(100);}}
static
void serverthread()}//
根據埠建立socket伺服器端
static socket getsocketserver(int serverport)
//獲取安全策略檔案的byte
static
byte getpolicytoclient()
}
客戶端步驟一:發起伺服器連線請求。
客戶端步驟二:連線伺服器成功,將需要傳送的資料放入緩衝區中,然後非同步向伺服器傳送訊息請求
客戶端步驟三:訊息傳送成功,此時設定乙個新的緩衝區例項,並且發起非同步接收伺服器返回的訊息
客戶端步驟四:獲取到伺服器返回的訊息,關閉socket
客戶端cs**如下:
public客戶端xaml前台**如下: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);
}
"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 被鏈結合成乙個...