MinGW 下 編譯 wxSQLite

初始條件

首先確定環境變量只有 Mingw 的路徑而沒有 msys 的路徑,因為使用 msys 編譯會有些問題。

修改 makefile

打開 wxsqlite3build 下的 makefile.gcc,設定你需要的條件,如若妳不需要加密模塊並且擁有自己的SQLite3源代碼目錄,妳可以設定 SQLITE3_DIR

編譯

make -f makefile.gcc clean
make -f makefile.gcc
more ...

分佈式版本控制系統SVK搭配TortoiseSVN的使用

前言

SVK與Linus所開發的Git相似,是一種分布式的版本控制系統,但它並不是完全從頭編寫的版本控制系統,而是基于 Subversion 的分布式的版本控制系统。如 CVS,Subversion 這些集中式管理系统存在对唯一的版本库过分依赖的缺陷:一旦不能正常连接到集中式的版本库,整个系统陷入瘫痪。分布式的版本控制系統最大的好處在于可以维护分布式的版本库,分散的开发人员可以通过 SVK 建立远程的 CVS,Subversion,P4 协议的版本库镜像,选择工作在自己合适的镜像版本库,这个镜像甚至可以是本地的,整个工作可以离线进行,然后在需要的时候同步镜像版本库到主版本库。

假定條件

首先假定妳已經熟悉所有SVN的操作, 再假定 c:\svnlib 為SVN的對外的倉庫根目錄, 假定妳機子已經安裝好SVN服務, 若 c:\svnlib 下有一項目 test 倉庫(c:\svnlib\test), 假定妳能正確通過Tortoise讀寫其項目文件( svn://localhost/test ), 假定網絡版本庫為 svn://192.168.1 …

more ...

MinGW 下編譯 gettext 0.17

這兩天編譯gettext搞得焦頭爛額,機子裡裝了大量的開源工具,結果各種動態鏈接庫版本不一致,編譯工具不一致,導致編譯時老是不成功,後來乾脆寫個批處理,把 path 環境變量只設置為 mingw 及 msys 的Bin,把 include 中除 mingw 及 msys的路徑外(例如Gtk)全刪除,然後在Dos下使用以下的編譯命令一次編譯成功:

sh ./configure --enable-threads=win32 --with-libiconv-prefix=d:/sb/sdks/libiconv

當前使用到的編譯環境變量(Mingw GCC4.21):

CPPFLAGS=-mno-cygwin -Wall -pipe -mthreads -fno-strict-aliasing
CFLAGS=-mno-cygwin -O2 -g -pipe -mthreads -fno-strict-aliasing
CXXFLAGS=-mno-cygwin …
more ...

使用 OTL 連接 SQLite

本文章假定妳熟悉SQLite數據庫,假定妳對OTL有 一定了解,假定妳所使用的操作系統為Windows平台。

OTL 採用的是ODBC數據源機制,到 http://www.ch-werner.de/sqliteodbc/ 可下載到最新的SQLiteODBC數據源驅動。

假定你已經創建了一個名為 MyTestDB 的數據源連接到你的數據庫,數據庫中有一表 Users, 表中有字段 id 及 value,id 为整型,value為字符串50個字節。

代碼:

#include <iostream>
#include <string>

#define OTL_ODBC
#include <otlv4.h>

otl_connect db; // Database connection

void test_select( void )
{

  otl_stream dbstream( 1 , " select * from Users " , db );
  int …
more ...

數據包在互聯網

1   前言

前段時間做一個NDIS網絡驅動,功能是修改IP包的IP地址并傳送到指定的機器,在測試時發現一個問題,假如在內網中傳送數據包到在內網的一台不同網域的機器上,數據包不能傳達,具體問題在[1]有詳細說明。在 Google查了很多數據,經過多次測試,最終發覺,原來是路由器(Router)的問題。在這過程中,發現很多網友對數據包在網絡上的傳輸有誤解,因此我想對這個問題進行一次詳細的說明,以備以后的不時之需。

網上有很多網友對以太網的理解是:數據包在互聯網是在IP層傳輸的,以IP地址來判斷地址并傳輸的。這是一個誤解,互聯網不認識IP協議層,只是由於現在有些寬帶運營商(ISP)使用了“釆用執行在協議層的路由器”,所以導致出現由於 IP不在該路由器所控制的范圍則自動被放棄,我們看見的就是不符合IP協議的均會被放棄。這種做法好處是避免了廣播風暴問題,但同時又削弱了互聯網的功能,例如我們就不能直接把一個不釆用IP協議的數據包傳輸至互聯網某一個物理地址(MAC地址,下同)的機器。

2   互聯網

當前互聯網釆用的是以太網,即釆用以太網交換機實現的,這種網絡的好處是,只要你知道網絡上某一機器的物理地址,即可以把數據包通過廣播傳輸到相應的機器上,但同時這樣也會造成廣播風暴,致使網絡癱瘓,當然這種情況是可以通過某些手段進行抑制的,下面會進一步說明 …

more ...

偽IP如何實現與客戶機進行TCP通訊?

軟件環境

WinXP SP2

截取數據包的Ndis5.0驅動已經寫好。 在用戶層,能夠修改驅動發來的數據包的IP地址,客戶機也能接收到該數據包。

我這個軟件是用于模擬多客戶機與服務器連接實現數據傳輸的測試軟件。

硬件環境

(33.33.33.33(假定是這個))         |—— 客戶機2 (192.168.1.105)
客戶機1——路由 (192.168.1.1)——|
                   |—— 發送機 (192.168.1.100) (偽裝 99.99.99.99)

現在需要發送機偽裝IP 99.99.99.99 與兩客戶機進行TCP通信

在客戶機2安裝的Ethereal 檢測到發送機發來的IP為 99.99.99.99 數據包,物理地址 …

more ...