2013年1月7日 星期一

斷電時的檔案內容保護

當程式執行過程中,發生不預期的斷電,可能會讓正在寫入的檔案發生錯誤,當重新開機之後,系統便產生錯誤。

參考 POSIX 針對 rename() 函數的定義
if a power-cut happens during the re-naming, the original file will be intact because the re-name operation is atomic

NAT -- STUN 測試

近期因為工作上的需要,因此針對 NAT 技術做一粗略的了解,本篇將紀錄使用 STUN 的實驗過程。


STUN簡介

STUN 全名為 Simple Traversal of UDP Through Netwoek Address Translators,利用位於 Internet 上的伺服器幫助防火牆內的UA獲知他們被NAT 轉換過的外部位址, 並協助他人的VoIP呼叫穿透防火牆送達牆內的UA。很多應用層的 VoIP程式必須仰賴 UA 主動提供自身的IP 位址及port number, 讓VoIP兩端的UA 彼此知道對方的IP 位址及port number, 才能互送封包, 建立雙向的通話。但是如果UA 是在NAT 後面, 在沒有外部的協助下,一個UA 無法看到 它自己被NAT 轉換過的外部位址,就無法提供此項資訊,讓 VoIP順利運作。原理部分可參考http://www.cs.nccu.edu.tw/~lien/Writing/NGN/firewall.htm


網路上提供了許多免費的 STUN Server,如下:
  • stun.stunprotocol.org
  • stun.fwdnet.net
  • stun.fwd.org (no DNS SRV record)
  • stun01.sipphone.com (no DNS SRV record)
  • stun.softjoys.com (no DNS SRV record)
  • stun.voipbuster.com (no DNS SRV record)
  • stun.voxgratia.org (no DNS SRV record)
  • stun.xten.com
  • stun1.noc.ams-ix.net (DNS SRV record on domain ams-ix.net not noc.ams-ix.net)

2012年12月28日 星期五

使用 gSoap 2.8.12 產生 ONVIF 程式碼


20121229 更新

1. gSOAP 最新版本為 2.8.12, 此版本在 FAQ 中註明了 ONVIF 程式產生時的 define namespace prefix and type bindings,如此在開發程式時可有一個統一的命名規則。如下:

tds = "http://www.onvif.org/ver10/device/wsdl" tev = "http://www.onvif.org/ver10/events/wsdl" tls = "http://www.onvif.org/ver10/display/wsdl" tmd = "http://www.onvif.org/ver10/deviceIO/wsdl" timg = "http://www.onvif.org/ver20/imaging/wsdl" trt = "http://www.onvif.org/ver10/media/wsdl" tptz = "http://www.onvif.org/ver20/ptz/wsdl" trv = "http://www.onvif.org/ver10/receiver/wsdl" trc = "http://www.onvif.org/ver10/recording/wsdl" tse = "http://www.onvif.org/ver10/search/wsdl" trp = "http://www.onvif.org/ver10/replay/wsdl" tan = "http://www.onvif.org/ver20/analytics/wsdl" tad = "http://www.onvif.org/ver10/analyticsdevice/wsdl" tdn = "http://www.onvif.org/ver10/network/wsdl" tt = "http://www.onvif.org/ver10/schema"

2012年11月6日 星期二

ONVIF -- SIEMENS Vectis HX add a new device


SIEMENS Vectis HX  add a new device (使用 ONVIF 規範)

|Time     | 192.168.0.28                          |
|         |                   | 192.168.0.10      |                
|43.599738000|         POST /onvif/device_           |HTTP/XML: POST /onvif/device_service HTTP/1.1

2012年10月14日 星期日

gSoap -- 小技巧分享

紀錄使用 gSoap 開發 ONVIF 時所用的一些小技巧。

1. 取出 Client 所送的 HTTP data。
若需要存取HTTP的原始資料,可以直接使用 zsoap->buf, zsoap->buflen 這兩個資料結構。

2012年10月6日 星期六

RTSP -- QuickTime HTTP log


使用 QuickTime 與 sixties.mov 連接
使用的URL 為 rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov
QuickTime 設定使用 HTTP 進行連接

==============================
GET /users/lrf10/movies/sixties.mov HTTP/1.0
User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1)
x-sessioncookie: 76ii3yNZAABRIw0ABIAAAA
Accept: application/x-rtsp-tunnelled
Pragma: no-cache
Cache-Control: no-cache
==============================

RTSP -- QuickTime UDP log


因為所開發的 RTSP 與 QuickTime 互通時有點問題,因此收集 QuickTime log 以供後續分析

使用 QuickTime 與 sixties.mov 連接
使用的URL 為 rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov


Log 摘錄如下:

DESCRIBE rtsp://quicktime.tc.columbia.edu:554/users/lrf10/movies/sixties.mov RTSP/1.0
CSeq: 1
Accept: application/sdp
Bandwidth: 512000
Accept-Language: en-GB
User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1)