2008年12月26日 星期五

常用簡體字意思

簡體 繁體

帧 -> 封包 (EX: 以太网帧长度 ->乙太網路封包長度)

数据库->資料庫

素數定理->質數定理

散列表 -> 雜湊表(Hash Table)

析构函数 -> 解構函數

續~

2008年12月14日 星期日

字元分割

JAVASCRIPT提供 split(',') //以逗點做字串分割

ex:
var stringArray = "123,456,789" ;
var getElement = stringArray.split(',')[1] ;

getElement 輸出即為 456 ~~~


PHP 提供 explode() //可以用特定字元切割字串,並存入陣列中

語法: $要被存入的陣列變數 = explode("分隔符號",要被切割的字串);
ex :
$engWords = "abc,def,ghi,jkw" ;
$words = explode(",", $engWords);
echo $words[0]; // abc
echo $words[1]; // def


ref: http://tw.php.net/explode

2008年11月15日 星期六

在BLOG貼程式碼

http://www.opinionatedgeek.com/DotNet/Tools/HTMLEncode/Encode.aspx

進入以後 貼上程式碼 點擊encode

就會自動產生
<
"

再繼續測試上面的話咧

<
"

<
"

...別無聊了

測試 string 於 javascript & php

html 的form 經過 POST 或 GET method 傳過來時,只能用PHP網頁接 ..新發現
題外話~~

重點~~~~~~~~~~~~~~
傳過來是
<input name="phonenumer" type="text" value="phone" >
<input name="checknum" type="text" value="chk" >

這個來接收
accept.php

<?php
$phonenumber = $_POST['phonenumer'] ;
$checknum = $_POST['checknum'] ;
$_SESSION['phonenumber']=$_POST['phonenumer'] ;

echo '$phonenumber='.$phonenumber ; //$phonenumber=phone
echo $phonenumber ; //phone
echo "$checknum" ; //chk

?>
<script type="text/javascript">
//<![CDATA[


alert("ffff") ; //ffff
var phonenumber1 ="4536" ;
//表單傳遞資訊存入javascript
alert("<?php echo 'fssfdsfsdf' ?>") ; //fssfdsfsdf
alert("<?php echo "$phonenumber" ?>") ; //0988...
alert('phonenumber1') ; //phonenumber1
alert("phonenumber12") ; //phonenumber12
alert(phonenumber1) ; //phone

var phonenumber = <?php echo "\"$phonenumber\"" ?> ;
alert(phonenumber) //phone
var phonenumber = "<?php echo $phonenumber ?>" ; //存成 phone 字串
alert(phonenumber + '000') // //phone000
var checknum = "<?php echo "$checknum" ?>" ; // 存成 chk 字串
alert(checknum + '000') //chk000

alert("http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+"&phonenumber="+ phonenumber) ;

// XMLHttpRequest通訊 ;
// function getLonLat(url){
// var request = GXmlHttp.create();
// var theDate = new Date(); //為了避免瀏覽器快取
// request.open("GET","http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+"&//phonenumber="+ phonenumberr="+ phonenumber , true) ;
//失敗...

var url="http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp="+theDate.getDate()+theDate.getMinutes()+theDate.getSeconds()+"&phonenumber="+ phonenumber ;
alert(url); //http://140.1xx.xxx.xxx/ixxxx/mxxxl.php?temp=165349&phonenumber=phone

2008年11月12日 星期三

xmlHttp


http://blog.roodo.com/jiing/archives/1052181.html

http://www.microsoft.com/taiwan/msdn/columns/ASPNET_2/aspnet_2_20051212.htm


http://newweb.syups.tp.edu.tw/documents/memo/PHP/php_develop.htm


http://audi.tw/AJAX/

2008年11月6日 星期四

phpmyadmin 安裝

IIS + PHP + phpmyadmin

之前講過 IIS 和 PHP安裝了 接下來講 phpmyadmin

我們使用 appserv-win32-2.5.9.exe

憑剛裝好的印象簡要:

1. 設定安裝路徑: C:php
2. 取消勾選安裝apache phphypertext
3. 於IIS 預設的網站點擊右鍵->新增 ->虛擬路徑 路徑為phpmyadmin剛裝好的地方(c:/php/www/phpmyadmin)

這樣就OK了~

2008年10月30日 星期四

SystemState.OwnerPhoneNumber 取得手機電話號碼

想要取得行動裝置上的電話號碼 可以用
SystemState.OwnerPhoneNumber 來得到~
但 為什麼我們抓不到呢~?
因為 這裡抓到的電話號碼是 事先已被設定在手機裡頭的 (非sim卡)
你可以看看 (開始->設定->個人資訊)

那如何實做抓取SIM卡的電話號碼呢?
在路徑
C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Samples\CPP\Win32\GetPhoneNumber\
有sample可以學習~

但要注意不是所有GSM的sim卡都支援號碼內建

2008年10月15日 星期三

Page has Expired (php)

呼~不停的問題啊

最近發現 之前寫的網頁有問題嚕~

網頁裡面的表單送出後,再按"上一頁"
就會出現
"Warning: Page has Expired The page you requested was created using information you submitted in a form. This page is no longer available. As a security precaution, Internet Explorer does not automatically resubmit your information for you.

To resubmit your information and view this Web page, click the Refresh button. "

目前看到的解決方法~


所以囉~到php.ini 找找"session.cache_limiter" 把值設為"private"看看~

2008年10月3日 星期五

2008年9月29日 星期一

於vs2005開啟一PDA專案檔

點擊.sln檔案時,跳出一個錯誤視窗

從使用者資料存放區擷取資訊時發生錯誤。找不到平台。

確定後又跳一個 : 無法開啟專案,因為它參考了您的資料存放區中沒有的裝置平台。

這個原因是因為開發這個PDA程式時是在某個平台上的SDK開發的

要怎麼看呢~ 用筆記本開啟.csproj檔, 找到下面幾行敘述

/>
4118C335-430C-497f-BE48-11C3316B135E
5.01

PocketPC 5.01 是 WIndows Mobile 5.0的平台,要安裝相關的SDK,可以到下載中心下載.

http://www.microsoft.com/downloads/details.aspx?FamilyID=83a52af2-f524-4ec5-9155-717cbe5d25ed&DisplayLang=en


2008年6月14日 星期六

實驗八 影像傳輸效能分析與評估

實驗目的:了解各種影響影像傳輸的因素

實驗步驟與實驗七差不多

STEP1
使用ffmpeg對yuv檔案做轉換成為m4v檔案,此實驗中使用不同量化程度的視訊串流做比較,參數為qscale,量化階級:2~31
STEP2
接著再用MP4Box將m4v檔案轉成mp4檔案,需注意的是,若之後要使用不同封包大小傳送串流,下面的MP4Box的mtu選項須與之後的NS2模擬環境所使用的封包大小ㄧ致。

STEP3
利用mp4trace將影片中每一個frame相關資訊取出存在foreman_qcif.st檔案中
STEP4
接下來就可以使用ns2模擬工具開始模擬網路效能啦

STEP5
NS2模擬完後產生傳送紀錄檔sd,接收端記錄檔rd,及影片記錄檔foreman_qcif.st and mp4 file,經由etmp4 產生一個有畫面遺失的mp4檔案:
$ ./etmp4.exe sd rd foreman_qcif.st foreman_qcif.mp4 foreman_qcife

STEP6
use ffmpeg.exe to 回復上ㄧ步重建的mp4檔案成yuv檔案

STEP7
使用 avgpsnr.exe獲得重建後的yuv之PSNR value =26.609
影響影像傳輸因素探討


a. 產生GOP length 9的方式:

b.產生GOP length 15 的方式


2008年6月13日 星期五

實驗七 MyEalvid-NT

實驗目的:
了解如何使用MyEvalVid-NT去評量多媒體網路的效能,然後使用MyEvalVid-NT驗證所得知可解畫面比例分析模型。
背景:
為了測是我們提出的網路架構對於多媒體傳輸的效能影響,我們會使用影片做測試,然而因為影片版權問題所以便產生了video traffic trace file 供人下載測試,而為了讓MyEvalVid能夠使用video traffic trace file 去做網路模擬動作,因此便修改MyEvalVid使之成為一個新的工具組MyEvalVid-NT。
修改了什麼呢? 兩者之間的差異在於將MyEvalVid-NT中的Evaulate Trace(ET)做了修改,使其能計算可解畫面比例(Decodable Frame Rate)、封包/畫面遺失率、封包/畫面的端點與端點延遲、封包/畫面的抖動率。
在MPEG編碼中,被編碼的視訊串流被分類為:
Intra-coded frame: 由自己本身畫面做編碼。
Predictive-coded frame:參考先前被編碼的I-frame or P-frame 及自己本身做編碼
Bi-directionally Predictive-code frame:參考先前及後來的I-frame or P-frame 及本身自己的資料做編碼
在一個GOP的I-frame裡,所有屬於這個I-frame的封包都正確被接收到則稱此I-frame可解碼的。同理類推P and B -frame。


為了得到可解畫面比例分析模型,我們要先求得影像檔案中的三個frame可解碼的期望數目



定義: 可解畫面比例 = 所有可解碼的畫面數除以一個影像的所有畫面數


所以囉~可解畫面比例的值越大代表影像品質越好囉!



實驗步驟:
STEP1
這裡下載video traffic trace file,抓完後打開檔案移除前兩行
存檔放入資料夾lab7裡頭
STEP2
使用NS2進行模擬

模擬結束後,會得到傳送端傳送封包的紀錄檔sd及接收端收到的封包記錄檔rd

STEP3
再進行評估分析前,須先轉換trace file的格式

轉換完會得到Verbose_StarWarsIV.st影片記錄檔

STEP4

使用et這個程式進行記錄檔sd、rd、Verbose_StarWarsIV.st做比較,就可得知在此種情晃下可解畫面數及可解畫面比例的大小為多少

可知,這次網路模擬傳輸中共送出163682 packets,其中 I-frame:28770 p-frame:45339 B-frame:89573

總共遺失:1595 其中I-frame:281 p-frame:433 B-frame:881

可解畫面比例為0.913543
total directly decodable frame 代表的意義為這個畫面所分割出來的封包全部被接收端所接收到的數目

STEP5
經由下面操作可得平均延遲時間及最大延遲時間

STEP6

先把資料收集起來 $awk'{print $1, $2}' delay_pkt.txt > delay_pkt
開始繪圖


畫面平均延遲時間及最大延遲時間
$awk'{print $1, $2}' delay_1.txt > delay_1
STEP7
封包與畫面抖動率
封包抖動率:
$awk'{print $1, $3}' delay_pkt.txt > jitter_pkt


畫面抖動率:
$awk'{print $1, $3}' delay_1.txt > delay_frame



2008年6月11日 星期三

php 寫入檔案問題

使用
$handle = fopen("c:/phpsid.txt" , "w+") ;
fwrite($handle , $contents) ;
fclose($handle) ;


出現
Warning: fopen(c:/phpsid.txt) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 452
Warning: fwrite(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 453
Warning: fclose(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\php_pratice_gmapuser\setarea_1.0\setarea.php on line 454


怪哉~
IIS 主目錄 下: 讀取 、 寫入 指令碼來源存取 都以勾選
使用權限也選擇 指令碼及執行檔

一直無法寫入,不知道哪裡有問題 悶~~
程式碼換成
$handle = fopen("c:/phpsid.txt" , "r") ;
$contents = fread($handle , filesize("phpsid.txt")) ;
fclose($handle) ;

讀取,是可行的~~~

2008年6月5日 星期四

實驗六: MyEvalVid

實驗目的:


Video Server 傳送影像至 Video Receiver,中間經過Internet 、無線網路,我們討論無線連接造成的封包遺失。

我們針對影像使用MyEvalvid 做Peak to Signal Nosie Ratio 評估,PSNR(峰值訊號雜訊比程式)是一種較為被大眾接受的影像品質鑑定客觀指標。 步驟如下


STEP1


我們使用ffmpeg.exe 把工人(foreman)的YUV檔案轉成m4V檔案


-s => set frame size , qcif means 176*144


-vcodec = >指定壓縮方式,如mpeg4


-r =>set frame rate ,這裡設定每秒30個畫面


-g => set the group of picture size,設定每一group有9個畫面


-bf = >use 'frames' B frames, 設定I與P之間or P與P之間有兩個frame


-i = >input file name,輸入來源影片 foreman_qcif.yuv





STEP2




用MP4Box把 .m4v 再轉成 .mp4


STEP3

用mp4trace.exe 將每一個frame的資訊擷取出來存到forman_qcif.st中

其中 192.168.0.2 is destination ip ,destination port number is 12346

(這邊設定不重要,因為沒有真的傳上網)

現在在lab6裡頭有這四檔案
foreman_qcif.st 裡面有400筆資料
between H and P or P and P have 2 B frame (與壓縮時的參數相關)

STEP4

開始用NS2模擬工具模擬網路效能 (lab6_1.tcl)

參數為 :

opt(0) = good->good 的機率
opt(1) = bad->bad 的機率
opt(2) = 在 good state下,封包發生錯誤的機率
opt(3) = 在 bad state下,封包發生錯誤的機率
opt(4) = seed number
opt(5) = 把每一畫面切成多少size大小的封包

傳送端送出659個封包,但接收端只收到652個封包
遺失率為0.0106
STEP5
使用模擬過程產生的TX記錄檔sd、RX記錄檔rd 與影片記錄檔foreman_qcif.st 和 mp4檔案
經由tmp4產生一個畫面有遺失的影片foreman_qcife.mp4

STEP6

再次使用ffmpeg將重建的foreman_qcife.mp4 轉回foreman_qcife.yuv

STEP7

使用avgpsnr針對重建後的 foreman_qcife.yuv 及原始foreman_qcif.yuv,獲得重建後foreman_qcife.yuv的PSNR值為34.839083

STEP8
接下來用YUViwer.exe真正觀察影片差異

左邊為原始影像,右邊為重建影像
因為封包遺失率為0.01 所以好像也不怎麼明顯
不過放大後看就有差了,畫面會比較霧些

2008年6月4日 星期三

gmap進度

終於找到存區域設定端點座標的變數了 ->endPointsMarker[i]

但是這個變數存在於function內,非廣義變數,要看完全部才能確定是否另設成廣義變數
因為endPointsMarker[i]出現在很多函式內,用不同名稱的引數做傳遞。
目前想到兩個方法:
1.用廣義變數,一但對點做任何變動或更新,就改變值(字串)。但是會更動很多地方..
2.也許只要在端點移動結束且勾選已設定好區域在抓函式內的變數就好(物件)。

終於有點進度了~
但是資料庫那邊出現
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '140.115.51.5' (10060) in C:\Inetpub\wwwroot\php_pratice_gmapuser\db.php on line 8

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Inetpub\wwwroot\php_pratice_gmapuser\db.php on line 10

連線無法建立,孤狗結果是資料庫server那邊有問題,要重開,再跟他們說吧~

2008年5月22日 星期四

準備工具

應用程式named "MmApp"(修改CBR程式得來) 衍生自"Application"類別
"MmApp" generate packet , transform by "UdpMmAgent","UdpMmAgent"衍生自"UdpAgent"類別

封包是用"hdr_mm"結構來描述。

程式路徑:
packet.h c:\cygwin\home\STD416\ns-allinone-2.29\common
ns-packet.tcl c:\cygwin\home\STD416\ns-allinone-2.29\tcl\lib
agent.h c:\cygwin\home\STD416\ns-allinone-2.29\common
app.h c:\cygwin\home\STD416\ns-allinone-2.29\apps
ns-default.tcl c:\cygwin\home\STD416\ns-allinone-2.29\tcl\lib

timer-handler c:\cygwin\home\STD416\ns-allinone-2.29\common

2008年5月21日 星期三

無線隨意網路路由協定

無線隨意網路中, 路由協定可分兩類:
  • proactive routing protocol:

Wireless Routing Protocol , Destination-Sequenced Distance-Vector protocol

  • reactive routing protocol :

Dynamic Source Routing , Ad hoc On-Demand Distance Vector Routing

比較 DSDV vs. AODV vs. DSR

DSDV

DSDV中美一個無線節點必須儲存並持續更新一個路由表,路由表內記錄著"目的地位置(destination)"、"下一個節點(next hop)"、"路徑節點數(hop count)"、"循序號碼(sequence number)"與 "第一次相連時間(install)"

路徑表的更新擁有time-driven & event-driven ,可以定期向周圍傳送路由表資訊,也可能因為網路拓樸劇變而向周圍傳送...

AODV

當無線節點要傳送封包出去時,先查找自己的路徑表,若無目的地節點的資訊,則廣播Route Requests(RREQs)封包尋找路徑。
每個RREQs都配有一個ID當無線節點收到RREQs時,先看ID之前有沒有收過,有的話就丟棄,以免RREQs充斥在網路上,再檢查自己是不是封包裡的目的地位置,不是,則看此中繼點(intermediate node)是否有可用的路徑可以到達目的地節點,沒有,則根據封包內資訊修改路徑表後再廣播出去。

每一個收到RREQs的無線節點都會cache住如何返回當時發出Route Reply要求來源端的路徑,因此當中繼點收到RREQ時,可以利用單點廣播方法送出RREP從目的地端到來源端,途中的無線節點根據RREP的位置序號更改路徑表,最後來源端的路徑表就含有到目的地節點的entry,接下來開始資料的傳送。

DSR

利用source routing觀念,即Tx知道Rx完整的跳躍路徑(hop-by-hop route)。
每個節點都有路徑暫存器,而路徑資訊直接記錄在每個封包的header中。

路徑發現程序(route discovery)與AODV類似,欲傳送封包時,先看自己的路徑表,若找不到到達目的地端的route entry,則作廣播動作發送RREQs,而收到RREQ的節點會回覆RREP給原本的來源端或中繼點,藉此產生路徑。不同的是,路徑記錄每經過一個跳耀,就會將跳躍ID季在RREQ的路徑記錄中,這樣,路徑記錄到目的地時就會有該路徑所有節點的資訊,目的端會在中多的REQUEST中挑選最佳路徑,根據路徑記錄傳送一個Route Reply回到來源端,來源端再將紀錄再route reply裡的路徑記錄儲存在路由表中。


2008年5月8日 星期四

實驗十 無線網路效能分析探討(二) Ad Hoc網路路由協定效能分析

實驗目的
1.了解如在在NS2中建立無線隨意網路(wireless Ad Hoc network)。
2.學習分析無線隨意網路路由協定(Ad Hoc routing protocols)的效能。

背景知識
行動式手提設備(手機、PDA、筆電),都屬於可移動的無線裝置,而無線傳輸方式可分成兩大類



  1. Infrastructure:透過基地台,由中央控制的傳輸模式

  2. Wireless Ad Hoc Network:特色是所有節點以對等方式進行無線網路存取,不需透過無線基地台 (wiki. Sony PSP 網路對戰就是這樣一個應用,還沒玩過,殘念~~)

無線隨意網路路由協定 :


  • Proactive routing protocol (table-driven protocol)

每個無線節點固定一段時間就會發送路徑訊息,各個無線節點依據收集近來的資料更新自己的路徑表,網路拓樸更動時,所有節點都會收到最新的路徑資訊,這種持續的更新會讓所有節點隨時有完整的路徑。


優點:Proactive routing protocol 讓每個送出的封包立刻得知到達目的地的路徑,沒有任何延遲 缺點:這種協定因為週期性的廣播訊息,浪費大量頻寬與無線網路節點的電源


現存的協定有:

Wireless Routing Protocol Destination-Sequenced Distance-Vector protocol

  • Reactive routing protocol (demand-driven routing protocol)

當一個節點要傳送資料給另一個節點時,來源節點會呼叫一個路徑發現程序(route-discovery process)並將此保存在暫存器中,直到過期或路徑無效

優點:只有在有需要時才主動發現路徑,不需要保存對整個網路環境的路由資訊,所以頻寬使用量較小。
缺點:路徑發現程序會造成延遲,平均延遲時間較長,所以尋找路徑時間較長。

DSDV vs. AODV vs. DSR

評估參數(Performance Metrics)

下面列出在此類效能分析實驗中最常用到的幾個評估參數 1.封包送達比例(Packet delivery fraction):CBR 來源端傳送封包數/到達目的地端封包數 2.封包平均點到點延遲時間 (Average end-to-end delay of data packets):所有延遲時間的總和,包括 發現路徑的緩衝時間、MAC層的重傳時間、傳遞時間 等。 3.第一個封包收到的時間 : 用來評估路由表收斂時間,若越早收到則表是收斂速度越快,這樣才能越早把封包從Tx送到Rx 實驗步驟 intruduce tools : cbrgen & setdest cbrgen (~/ns-allinone-2.29/ns-2.29/indep-utils/cmu-scen-gen/cbrgen.tcl): generate TCP flow or CBR flow 用法 ns cbrgen [-type cbrtcp] [-nn node] [-seed seed] [-mc connections] [-rate rate] 舉例: p1
































2008年4月26日 星期六

lab9 無線網路效能分析探討(-) 隱藏節點和暴露節點問題



實驗目的:

  1. 了解什麼是隱藏節點和暴露節點
  2. 了解 RTS/CTS如何降低隱藏節點問題發生的機會,以提升系統效能 3. 了解 NS2 中無線傳輸模型和門檻的觀念

背景知識:

  • 隱藏節點問題:

    節點B在節點A和節點C傳輸範圍內的交集區域內,但是A和C都不在互相的傳輸範圍內,這時有兩個節點A,C同時想傳送資料給節點B,節點A傳送資料給B時,節點C會認為目前網路閒置,同時也會傳送資料給節點B,同時傳送給節點B的資料就會發生碰撞(Collision).

    這種因傳送距離而發生的誤判的問題稱為隱藏節點問題(Hidden Terminal Problem).


  • 降低隱藏節點問題

    當Tx在送出資料前先發送一個控制封包 (Request to Send),告知Tx傳送範圍內的所有節點不要有任何傳輸的動作,而Rx如果目前是空閒的,則回應一個Clear to Send 封包告訴Tx可以開始傳送料,如此一來就可以降低隱藏節點的問題,但是並不能完全解決!

  • 暴露節點問題

    Tx:C 要傳送資料給D時,發現(聽到)傳輸範圍內的B正在傳送資料給A(C是B的暴露節點),Tx:C就會延遲傳送,但這種延遲是不必要的,因為B傳送資料給A與C傳送資料給D並不衝突,因此這種因為聽到傳輸範圍內有節點在傳輸,而延遲傳輸就是暴露節點的問題
  • 使用RTS/CTS
    我們可能想到使用RTS/CTS,當C聽到B送出的RTS,但卻沒聽到相對應的CTS,那麼不就可以推論出C是自己是暴露節點了嗎?!所以C可以同時傳送資料出去,但在這種情況下,如果是別人傳送資料給C,那麼就可能預B傳送的資料發生碰撞,所以使用RTS/CTS並不能解決暴露節點的問題
  • 傳輸模型及門檻
    NS2實做了一些傳輸模型:


Free Space 是最理想的傳輸模型(檔案在~/ns-2.29/mobile/propagation.h & propagation.cc)

Two Ray Ground 除了考慮直線 path loss也考慮地面反射(reflection of ground)
(檔案在~/ns-2.29/mobile/tworayground.h & tworayground.cc)

Shadowing 是用來模擬Tx到Rx中間有障礙物時對傳送訊號的影響,常用於indoor
(檔案在~/ns-2.29/mobile/shadowing.h & shadowing.cc)

關於"門檻",NS2主要利用訊號強度門檻(Threshold)方式,判斷封包是否成功收到
NS2設定一個訊號偵測(Carrier Sense)的門檻CSThresh_ ,決定封包是否能被Rx偵測出來 (於PHY Module)
NS2會設定另一個RxThresh_ ,用來判斷封包是否能被Rx所接收 (於MAC)

(檔案在~/ns-2.29/mobile/wireless-phy.h & wireless-phy.cc)

開始實驗步驟

STEP1.

ns2提供一個小工具程式threshold.cc(在ns-allinone-2.29/ns-2.29/indep-utils/propagation),他可以藉由輸入想要使用的傳輸模型和有效傳輸距離,而輸出相對應的參數值

用g++編譯它


顯示警告


意思是版本不同了,引入的標頭檔不用x.h的形式而用x來取代
沒關係 不影響我們的作業
編譯完後在同目錄下會產生一個threshold.exe

STEP2
執行

它告訴我們使用方法囉
來測試看看 設定傳輸模式TwoRayGround 有效傳輸距離250m

顯示參數

STEP3
用TCL模擬程式驗證(home/clark/lab9/test_2nodes.tcl)
這程式設定有兩節點n0(30,30),n1(280,30) n0要傳輸給n1,參數如上設定
執行

模擬結束,會產生接收紀錄檔,打開來看看,確實有接收到

STEP4
那如果變更超過可接受距離呢?


在執行一次 $ns test_2nodes.tcl,開啟此次接收檔rd

可知n1完全沒接收到n0傳來的資料

接下來要討論隱藏節點問題了
如圖一nA-nB d=100m ,nB-nC d=100 m,節點之間的carrier sense d=150m 傳送有效距離為120m
利用小工具知道我們要設定的參數


對於CSThresh_的設定 ,因為用的公是相同,只要把RXThresh_結果拿來用即可
TCL模擬程式

執行
$ns test_hidden_terminal.tcl
我們看執行後產生的紀錄檔

sd1:

sd2:

rd1:
rd2:
更改TCL模擬檔

再一次執行

rd1:

rd2:


明顯的 使用RTS/CTS可以降低隱藏節點問題,但不能完整解決

接下來討論暴露節點問題
如圖2所示
S1,S2同時想分別傳送 資料給R1,R2,節點之間距離都是100m ,carrier sense 距離120m,有效傳輸距離100m用小工具算出相對應參數


tcl模擬程式

執行 $ns test_exposed_terminal.tcl

記錄檔封包





更改 ctsrts

rd1

rd2

結果顯示 使用RTS/CTS不能有效解決暴露節點的問題