星期三, 9月 27, 2006

Debug PCAP

雖然之前人家說的問題我真是沒有遇過....

如果沒有辦法開啟網路介面...可以用這個Debug

下載Packet.dll (Win2k/xp/2003) 其他版本

跟程式放在一起執行

之後會生出一個 winpcap_debug.txt 檔案

或許可以釐清一些問題...

或者...可以看看別人寫的WinDump有沒有問題

執行方法

Windump.exe -D 列出所有的介面卡

Windump.exe -i X 監聽第X張卡

真糟糕 有蟲嘛?

有人告訴我說他在好幾台電腦上面執行都會出現錯誤
所以只好貼一個簡單的debug方法

請先下載並且安裝gdb

他會安裝到C:\mingw

然後下載Debug版的netflow-dbg.7z

解壓縮

然後開一個cmd.exe

切換到netflow-dbg.exe的所在目錄

執行 c:\mingw\bin/gdb.exe netflow-dbg.exe

出現 (gdb)的提示之後 打 run

之後程式會開始跑跑跑....就照一般操作

等到程式死掉的時候 回到gdb 打 bt

然後麻煩把畫面抓下來寄給我 ksc91u@gmail.com

星期一, 9月 25, 2006

短期之內不會更新了

恩....
就....記得填Gateway....
還有後面的選0就會在午夜十二點幫你重設,並且把Gateway加回去


短期之內沒有什麼大問題就不會再改了
程式碼也有上傳,需要的人去另外一篇post抓吧

下載
主程式: 下載點
函式庫: GTK+ WinPCAP 第一次安裝就好. Pthread 這個跟主程式放在一起執行.

星期四, 9月 21, 2006

流量軟體...小更新...

又做了一些小小更新...還有加上了reset按鈕..
有人來信問說斷線之後就沒有辦法回復了...
恩...你可以把網路連線停止再重新啟動
下次會再修改

單位的地方...如果選GB就連底下的流量也會顯示GB...那根本很久才會更新到...
所以...也是下次讓兩個選項分開

另外...定時重設計畫中...

問一個問題 請按文章下面的 comments回應
你會願意贊助這個軟體的作者,讓作者有更多的動力把他寫的更好嗎?

恩...理論上...用到的GTK,Pthread都是LGPL,WinPCAP也允許發佈binary...
所以或許這個程式可以把程式碼藏起來的...
恩...不過我應該是不會這麼作啦...就算沒有人要贊助,也沒有理由這麼作....
因為似乎只是個人興趣的小東西...

大家來試試看今天的更新吧~~

下載
主程式: 下載點
函式庫: GTK+ WinPCAP 第一次安裝就好. Pthread 這個跟主程式放在一起執行.

星期日, 9月 17, 2006

宿網流量軟體 程式碼

你需要
1.DevC++ 5.0beta
2.WinPCAP Dev Pack
3.GTK+ Dev Pack
4.Pthread Win32

原始碼在 這裡

DevC++ 5有點問題 有些時候會出現DEP錯誤
這裡教你怎麼關掉

你可能需要另外設定一下Porject Include 跟Library的位置...
讓DevC++ compile的時候可以找到.h跟.a檔...

宿網流量紀錄軟體

恩...ㄜ...哈哈...真的有人有興趣ㄟ...
可惜我的Google Adsense被取消了...
好啦...騙錢的事情還是不要做的好...

2006/09/18
1.超過流量會斷線

2.Exit按了會關掉
3.單位可以選MB KB B
4.又發現 Thread有bug...修正..23:00

看圖




1.先選網路卡 IP 限制流量的地方填 0 ㄜ...其實他是會從0開始計算
2.MB/KB/B的地方現在還沒有寫 Orz
3.免費IP 重要阿 140.123.*.*就填 140.123就好 後面不用 .
4.Start之後那個流量就會開始增加了
5.可以把主視窗縮到最小 他就會自己不見 要叫出來就按一下 Main

下載
主程式: 下載點
函式庫: GTK+ WinPCAP 第一次安裝就好. Pthread 這個跟主程式放在一起執行.

請愛用OpenSource的7zip解壓縮
IZArc也不錯

星期六, 9月 09, 2006

Pthread conditional wait

When writing multi-thread program, you may want to wait until another thread finished to continue the current thread. You can use pthread_join after a thread has been created.

int retm=pthread_create(&main_thread,NULL,init_gtk_thread,(void *)0);
pthread_join(main_thread,NULL);

The current thread will be blocked until main_thread finished by calling pthread_exit or return.

But when you want to wait until some condition met, you will need to use a condition variable and a mutex .

Example

int x,y;
pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
Thread 1 - wait until x>y
pthread_mutex_lock(&mut);
while (x <= y) { pthread_cond_wait(&cond, &amp;mut); } /* operate on x and y */ pthread_mutex_unlock(&mut);
Thread 2 - modify x and y
pthread_mutex_lock(&mut);
while(x<=y)x++; if (x > y) pthread_cond_broadcast(&cond);
pthread_mutex_unlock(&mut);

  1. mutex mut protects variables x and y.
  2. pthread_cond_wait will unlock mut and go to sleep and waits for the condition variable cond to be signalled.
  3. thread 2 signal cond by calling pthread_cond_signal or pthread_cond_broadcast
P.S. Pthread-win32 is here