• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            興海北路

            ---男兒仗劍自橫行
            <2010年5月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            統(tǒng)計(jì)

            • 隨筆 - 85
            • 文章 - 0
            • 評(píng)論 - 17
            • 引用 - 0

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            收藏夾

            全是知識(shí)啊

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            忘記mysql用戶密碼怎么辦?

            作者: falcon   發(fā)表日期: 2007-04-05 21:50   復(fù)制鏈接



            1. stop the mysql server
            $ps -ef | grep mysqld
            then  kill one by one
            OR
            $killall -TERM mysqld

            2. start the mysql server with the following command
            $ /usr/bin/mysqld_safe --skip-grant-table &

            3. change your password for root
            mysql> use mysql;
            mysql> update user set password=password("new password") where user="root";
            mysql> flush privileges;
            mysql> quit

            4. restart the mysql server with normal mode
            /etc/init.d/mysql restart

            轉(zhuǎn)自:
            http://www.cndw.com/tech/data/2006050864444.asp
            有改動(dòng)

            posted @ 2008-03-14 16:08 隨意門 閱讀(218) | 評(píng)論 (0)編輯 收藏
            用mysqldump備份和恢復(fù)指定表

            作者: falcon   發(fā)表日期: 2007-03-05 17:03   復(fù)制鏈接



            備份
            Quote:

            mysqldump -u user -p db tab1 tab2 > db.sql



            恢復(fù)
            Quote:

            mysql -u user -p db < db.sql



            參考資料:

            備份/恢復(fù)
            http://hi.baidu.com/hecheng/blog/item/e0d5b31c2e24a88b87d6b643.html

            posted @ 2008-03-14 16:07 隨意門 閱讀(835) | 評(píng)論 (0)編輯 收藏
            自動(dòng)備份mysql數(shù)據(jù)庫(kù)

            作者: falcon   發(fā)表日期: 2007-04-18 11:00   復(fù)制鏈接



            如果管理過(guò)數(shù)據(jù)庫(kù),你就會(huì)發(fā)現(xiàn)手工備份數(shù)據(jù)庫(kù)是個(gè)非常糟糕的事情。如果能夠按照一定的策略自動(dòng)備份,可能會(huì)是個(gè)不錯(cuò)的選擇。

            就mysql 來(lái)說(shuō),我們可以通過(guò)copy數(shù)據(jù)庫(kù)文件和mysqldump兩種方式來(lái)實(shí)現(xiàn)備份,這里我們通過(guò)直接copy數(shù)據(jù)庫(kù)文件來(lái)進(jìn)行備份(這種方式在不同的 mysql版本之間備份和恢復(fù)可能會(huì)存在問(wèn)題,需要注意,當(dāng)然mysqldump也會(huì)出一些問(wèn)題,但是沒(méi)有前者嚴(yán)重)。

            下面介紹具體的備份方法:

            先寫一個(gè)實(shí)現(xiàn)自動(dòng)備份的腳本(建議引入一些參數(shù),提高靈活性):


            Code:

            [Ctrl+A Select All]



            *這里的備份策略是:保留兩周內(nèi)備份的數(shù)據(jù),備份的數(shù)據(jù)庫(kù)名字包含日期信息

            然后把上面的腳本作為cron的任務(wù)
            > su
            > crontab -e
            4 4 * * 1 /bin/backup.sh 2>/var/log/backup.log

            *這里的備份策略是:每周的周一的4點(diǎn)4分備份一次

            這個(gè)樣子就實(shí)現(xiàn)了每周備份一次,并保留兩周內(nèi)備份的數(shù)據(jù)。

            posted @ 2008-03-14 16:06 隨意門 閱讀(387) | 評(píng)論 (0)編輯 收藏
            獲取IP地址函數(shù)(本地、域名轉(zhuǎn)換)

            作者: falcon   發(fā)表日期: 2006-09-27 15:27   復(fù)制鏈接



             前些天由于項(xiàng)目需要,自己整了一個(gè)比較全面的獲取IP地址的函數(shù):
              可以獲取本地的IP地址,也可以根據(jù)域名獲取IP地址,感覺(jué)比較有用特此奉獻(xiàn)上,呵呵。

              下面是源代碼


            Code:

            [Ctrl+A Select All]


              下面是一個(gè)測(cè)試的代碼
            test_GetIp.c


            Code:

            [Ctrl+A Select All]



              具體使用演示
            引文:

            $./test_GetIp xxxy.lzu.edu.cn --這里是根據(jù)域名轉(zhuǎn)換為IP地址
            domain name or ip address : xxxy.lzu.edu.cn
            current ip address: 202.201.0.237

            $ ./test_GetIp 219.246.79.7 --輸入地址返回地址
            domain name or ip address : 219.246.79.7
            current ip address: 219.246.79.7

            $ ./test_GetIp localhost  --獲取本地IP地址
            domain name or ip address : localhost
            current ip address: 219.246.79.4

            posted @ 2008-03-14 16:05 隨意門 閱讀(4224) | 評(píng)論 (0)編輯 收藏
            匿名FTP站點(diǎn)掃描C語(yǔ)言源代碼

            作者: falcon   發(fā)表日期: 2006-08-22 09:21   復(fù)制鏈接



            經(jīng)過(guò)幾天的調(diào)試和修改,比較穩(wěn)定的匿名ftp站點(diǎn)掃描工具終于完成拉。
            該掃描工具可以掃描指定IP段的ftp站點(diǎn),大家可以把它改寫來(lái)掃描其他的端口。甚至基于此結(jié)構(gòu)寫一個(gè)ftp搜索引擎的爬蟲(chóng)。過(guò)段時(shí)間,我再把爬蟲(chóng)的代碼公布出來(lái),暫時(shí)正在調(diào)試和修改中。

            這些天弄得很累,呵呵,暫時(shí)只把源代碼弄上來(lái)。有時(shí)間再做詳細(xì)的解釋。有問(wèn)題在后面跟帖哦。

            ftp掃描的核心代碼:ffs.c


            Code:

            [Ctrl+A Select All]



            自動(dòng)掃描多個(gè)IP段的腳本: affs


            Code:

            [Ctrl+A Select All]



            這個(gè)可以用來(lái)終止上面的掃描過(guò)程: kffs


            Code:

            [Ctrl+A Select All]



            下面是蘭大校園網(wǎng)內(nèi)的IP段: ftpinfo.txt
            Quote:

            202.201.0.0 202.201.15.255;210.26.48.0 210.26.63.255;219.246.32.0 219.246.95.255;219.246.176.0 219.246.191.255;222.23.48.0 222.23.63.255;202.38.127.176 202.38.127.191;202.38.126.224 202.38.126.255


            注意,每個(gè)段之間用分號(hào)分開(kāi)哦,因?yàn)樵赼ffs腳本里頭用到了這個(gè)分割符號(hào)。

            下面這個(gè)可以在掃描過(guò)后的日志里頭提取出ip地址: logtoip


            Code:

            [Ctrl+A Select All]




            具體使用演示:

            只用 ffs
            Quote:

            falcon@falcon:~/program/c/code/ftp/socket$ gcc -lpthread -o ffs ffs.c
            falcon@falcon:~/program/c/code/ftp/socket$ ./ffs 219.246.183.222 219.246.183.222
            startIp = 219.246.183.222,3690379230
            endIp = 219.246.183.222,3690379230
            thread 0 create successed!
            currentIp = 3690379230  219.246.183.222
            220 Microsoft FTP Service
            331 Anonymous access allowed, send identity (e-mail name) as password.
            230 Anonymous user logged in.
            221
            <can login: 219.246.183.222>
            Thread 0 down
            Finish!




            用 affs

            Quote:

            falcon@falcon:~/program/c/code/ftp/socket$ ./affs ftpinfo.txt fs.log
            start time:2006年 08月 21日 星期一 21:38:01 CST
            is scaning...



            正在掃描,結(jié)束以后,我們可以獲得掃描的一個(gè)日志文件fs.log

            用logtofile腳本提取可以訪問(wèn)的ip地址
            Quote:

            falcon@falcon:~/program/c/code/ftp/socket$ ./logtoip fs.log
            202.201.0.237
            202.201.0.243
            202.201.1.126
            202.201.3.82
            202.201.3.99
            202.201.6.125
            202.201.7.17
            202.201.8.125
            202.201.13.65
            202.201.13.118
            202.201.13.139
            202.201.13.149



            最好,要是想結(jié)束掃描的話,用 kffs腳本
            Quote:

            falcon@falcon:~/program/c/code/ftp/socket$ ./kffs
            do you want to kill all ftp scan process?(y or n): y
            殺死



            另外,要是你想把你的測(cè)試結(jié)果發(fā)布,可以在日志里頭提取出ip地址并放到html文件里頭。下面是這么一個(gè)腳本:logtohtml


            Code:

            [Ctrl+A Select All]



            為了讓系統(tǒng)自動(dòng)掃描所有的IP段,并保存為html文件發(fā)布出去,那么我們可以這么做。再寫個(gè)腳本 updateftp,(把a(bǔ)ffs 和logtohtml放在同一目錄下哦,還有updateftp也是)


            Code:

            [Ctrl+A Select All]



            如果再加上crontab,我們就可以讓系統(tǒng)自動(dòng)掃描拉
            Quote:

            $crontab -e
            00 12 * * * path/to/updateftp



            ok,好啦
            這里是演示的最終結(jié)果:
            http://mirror.lzu.edu.cn/newftp/index.html

            經(jīng)過(guò)測(cè)試,掃描整個(gè)蘭大校園網(wǎng)內(nèi)的IP段,大概需要15鐘左右。

            對(duì)拉,需要提到的是,在用腳本的時(shí)候,記得先修改成可執(zhí)行的哦,如:
            Quote:

            $chmod 755 path/to/shellscriptfile



            參考資料太多拉,這里暫時(shí)不列舉出來(lái)哦
            翻了一大堆關(guān)于套接字和多線程編程的資料。我在其他的幾個(gè)帖子里頭貼出了其中的一些參考資料。

            posted @ 2008-03-14 16:04 隨意門 閱讀(938) | 評(píng)論 (-4)編輯 收藏
            linux下C語(yǔ)言多線程編程實(shí)例

            作者: falcon   發(fā)表日期: 2006-08-19 08:36   復(fù)制鏈接



            學(xué)東西,往往實(shí)例才是最讓人感興趣的,老是學(xué)基礎(chǔ)理論,不動(dòng)手,感覺(jué)沒(méi)有成就感,呵呵。

            下面先來(lái)一個(gè)實(shí)例。我們通過(guò)創(chuàng)建兩個(gè)線程來(lái)實(shí)現(xiàn)對(duì)一個(gè)數(shù)的遞加。
            或許這個(gè)實(shí)例沒(méi)有實(shí)際運(yùn)用的價(jià)值,但是稍微改動(dòng)一下,我們就可以用到其他地方去拉。

            下面是我們的代碼:


            Code:

            [Ctrl+A Select All]




            下面我們先來(lái)編譯、執(zhí)行一下

            Quote:

              falcon@falcon:~/program/c/code/ftp$ gcc -lpthread -o thread_example thread_example.c
              falcon@falcon:~/program/c/code/ftp$ ./thread_example
              我是主函數(shù)哦,我正在創(chuàng)建線程,呵呵
              線程1被創(chuàng)建
              線程2被創(chuàng)建
              我是主函數(shù)哦,我正在等待線程完成任務(wù)阿,呵呵
              thread1 : I'm thread 1
              thread1 : number = 0
              thread2 : I'm thread 2
              thread2 : number = 1
              thread1 : number = 2
              thread2 : number = 3
              thread1 : number = 4
              thread2 : number = 5
              thread1 : number = 6
              thread1 : number = 7
              thread2 : number = 8
              thread1 : number = 9
              thread2 : number = 10
              thread1 :主函數(shù)在等我完成任務(wù)嗎?
              線程1已經(jīng)結(jié)束
              thread2 :主函數(shù)在等我完成任務(wù)嗎?
              線程2已經(jīng)結(jié)束





            實(shí)例代碼里頭的注釋應(yīng)該比較清楚了吧,下面我把網(wǎng)路上介紹上面涉及到的幾個(gè)函數(shù)和變量給引用過(guò)來(lái)。


            Quote:


              線程相關(guān)操作

              一 pthread_t

              pthread_t在頭文件/usr/include/bits/pthreadtypes.h中定義:
                typedef unsigned long int pthread_t;
                它是一個(gè)線程的標(biāo)識(shí)符。

              二 pthread_create

              函數(shù)pthread_create用來(lái)創(chuàng)建一個(gè)線程,它的原型為:
                extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,
                void *(*__start_routine) (void *), void *__arg));
              第一個(gè)參數(shù)為指向線程標(biāo)識(shí)符的指針,第二個(gè)參數(shù)用來(lái)設(shè)置線程屬性,第三個(gè)參數(shù)是線程運(yùn)行函數(shù)的起始地址,最后一個(gè)參數(shù)是運(yùn)行函數(shù)的參數(shù)。這里,我們的 函數(shù)thread不需要參數(shù),所以最后一個(gè)參數(shù)設(shè)為空指針。第二個(gè)參數(shù)我們也設(shè)為空指針,這樣將生成默認(rèn)屬性的線程。對(duì)線程屬性的設(shè)定和修改我們將在下一 節(jié)闡述。當(dāng)創(chuàng)建線程成功時(shí),函數(shù)返回0,若不為0則說(shuō)明創(chuàng)建線程失敗,常見(jiàn)的錯(cuò)誤返回代碼為EAGAIN和EINVAL。前者表示系統(tǒng)限制創(chuàng)建新的線程, 例如線程數(shù)目過(guò)多了;后者表示第二個(gè)參數(shù)代表的線程屬性值非法。創(chuàng)建線程成功后,新創(chuàng)建的線程則運(yùn)行參數(shù)三和參數(shù)四確定的函數(shù),原來(lái)的線程則繼續(xù)運(yùn)行下一 行代碼。

              三 pthread_join pthread_exit
                
              函數(shù)pthread_join用來(lái)等待一個(gè)線程的結(jié)束。函數(shù)原型為:
                extern int pthread_join __P ((pthread_t __th, void **__thread_return));
              第一個(gè)參數(shù)為被等待的線程標(biāo)識(shí)符,第二個(gè)參數(shù)為一個(gè)用戶定義的指針,它可以用來(lái)存儲(chǔ)被等待線程的返回值。這個(gè)函數(shù)是一個(gè)線程阻塞的函數(shù),調(diào)用它的函數(shù) 將一直等待到被等待的線程結(jié)束為止,當(dāng)函數(shù)返回時(shí),被等待線程的資源被收回。一個(gè)線程的結(jié)束有兩種途徑,一種是象我們上面的例子一樣,函數(shù)結(jié)束了,調(diào)用它 的線程也就結(jié)束了;另一種方式是通過(guò)函數(shù)pthread_exit來(lái)實(shí)現(xiàn)。它的函數(shù)原型為:
                extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));
                唯一的參數(shù)是函數(shù)的返回代碼,只要pthread_join中的第二個(gè)參數(shù)thread_return不是NULL,這個(gè)值將被傳遞給 thread_return。最后要說(shuō)明的是,一個(gè)線程不能被多個(gè)線程等待,否則第一個(gè)接收到信號(hào)的線程成功返回,其余調(diào)用pthread_join的線 程則返回錯(cuò)誤代碼ESRCH。
                在這一節(jié)里,我們編寫了一個(gè)最簡(jiǎn)單的線程,并掌握了最常用的三個(gè)函數(shù)pthread_create,pthread_join和pthread_exit。下面,我們來(lái)了解線程的一些常用屬性以及如何設(shè)置這些屬性。


              互斥鎖相關(guān)

              互斥鎖用來(lái)保證一段時(shí)間內(nèi)只有一個(gè)線程在執(zhí)行一段代碼。

              一 pthread_mutex_init

              函數(shù)pthread_mutex_init用來(lái)生成一個(gè)互斥鎖。NULL參數(shù)表明使用默認(rèn)屬性。如果需要聲明特定屬性的互斥鎖,須調(diào)用函數(shù) pthread_mutexattr_init。函數(shù)pthread_mutexattr_setpshared和函數(shù) pthread_mutexattr_settype用來(lái)設(shè)置互斥鎖屬性。前一個(gè)函數(shù)設(shè)置屬性pshared,它有兩個(gè)取值, PTHREAD_PROCESS_PRIVATE和PTHREAD_PROCESS_SHARED。前者用來(lái)不同進(jìn)程中的線程同步,后者用于同步本進(jìn)程的 不同線程。在上面的例子中,我們使用的是默認(rèn)屬性PTHREAD_PROCESS_ PRIVATE。后者用來(lái)設(shè)置互斥鎖類型,可選的類型有PTHREAD_MUTEX_NORMAL、PTHREAD_MUTEX_ERRORCHECK、 PTHREAD_MUTEX_RECURSIVE和PTHREAD _MUTEX_DEFAULT。它們分別定義了不同的上所、解鎖機(jī)制,一般情況下,選用最后一個(gè)默認(rèn)屬性。

              二 pthread_mutex_lock pthread_mutex_unlock pthread_delay_np

              pthread_mutex_lock聲明開(kāi)始用互斥鎖上鎖,此后的代碼直至調(diào)用pthread_mutex_unlock為止,均被上鎖,即同一時(shí)間只 能被一個(gè)線程調(diào)用執(zhí)行。當(dāng)一個(gè)線程執(zhí)行到pthread_mutex_lock處時(shí),如果該鎖此時(shí)被另一個(gè)線程使用,那此線程被阻塞,即程序?qū)⒌却搅硪? 個(gè)線程釋放此互斥鎖。




            注意:

            需 要說(shuō)明的是,上面的兩處 sleep不光是為了演示的需要,也是為了讓線程睡眠一段時(shí)間,讓線程釋放互斥鎖,等待另一個(gè)線程使用此鎖。下面的參考資料1里頭說(shuō)明了該問(wèn)題。但是在 linux下好像沒(méi)有pthread_delay_np那個(gè)函數(shù)(我試了一下,提示沒(méi)有定義該函數(shù)的引用),所以我用了sleep來(lái)代替,不過(guò)參考資料2 中給出另一種方法,好像是通過(guò)pthread_cond_timedwait來(lái)代替,里頭給出了一種實(shí)現(xiàn)的辦法。


            參考資料:

            1。Linux下的多線程編程
            http://linux.chinaunix.net/doc/program/2001-08-11/642.shtml
            2。pthread_delay_np
            http://bbs.chinaunix.net/archiver/?tid-584593.html

            posted @ 2008-03-14 16:03 隨意門 閱讀(698) | 評(píng)論 (0)編輯 收藏
            linux下c語(yǔ)言多進(jìn)程編程

            作者: falcon   發(fā)表日期: 2006-07-14 16:49   復(fù)制鏈接



            多進(jìn)程編程是作為程序員必須熟悉的一個(gè)東西哦

            下面,我們?cè)趌inux用系統(tǒng)的fork調(diào)用來(lái)實(shí)現(xiàn)多進(jìn)程編程練習(xí)

            先看代碼吧



            Code:

            [Ctrl+A Select All]



            再來(lái)看看效果

            Quote:

            falcon@falcon:~/program/c/code/process$ gcc -o mul_pro_myself mul_pro_myself.c
            falcon@falcon:~/program/c/code/process$ ./mul_pro_myself
            I am the child :32063
            child_pro: 0
            I'm the parent :32062
            parent_pro: 0
            child_pro: 1
            parent_pro: -1
            child_pro: 2
            child_pro: 3
            parent_pro: -2
            child_pro: 4
            parent_pro: -3
            Child exit with:5
            Who am I :5
            parent_pro: -4
            Parent exit with:-5
            Who am I :-5



            看到上面的代碼,結(jié)合上面的實(shí)驗(yàn)結(jié)果,我們有個(gè)疑問(wèn): Who am I? i的值到底是什么呢?

            以我們平常的經(jīng)驗(yàn),變量i在整個(gè)程序里頭只可能有一個(gè)副本,也就是說(shuō)在任何一個(gè)狀態(tài),他的值是唯一的。

            但是我們從上面的實(shí)驗(yàn)結(jié)果可以看出,在多進(jìn)程的程序里頭,情況就不再是這個(gè)樣子,在不同的進(jìn)程中保存了不同的副本。

            好玩不?

            如果對(duì)程序有疑問(wèn),歡迎查看下面的參考資料哦,非常不錯(cuò)的資料


            參考資料:
            《linux操作系統(tǒng)下c語(yǔ)言編程入門 》
            http://www.mwjx.com/aboutfish/private/book/linux_c.txt

            posted @ 2008-03-14 16:03 隨意門 閱讀(1676) | 評(píng)論 (0)編輯 收藏
            用c寫個(gè)大數(shù)求和的程序

            作者: falcon   發(fā)表日期: 2006-05-31 18:46   復(fù)制鏈接



            先說(shuō)一下思路哦:

            1)先從鍵盤屏幕接收兩個(gè)大數(shù),按字符串存放到字符數(shù)組中。
            2)
            初始化進(jìn)位為0
            然后從兩個(gè)字符數(shù)組中分別取出最后一個(gè)字符(數(shù)字)開(kāi)始來(lái)求和
            一直求和到字符串長(zhǎng)度較小的最小下標(biāo)處停止
            結(jié)果保存較大數(shù)字所存放的字符數(shù)組中
            (說(shuō)明:
            如果結(jié)果大于106,那么結(jié)果減去58存入,并記錄進(jìn)位為1
            否則,結(jié)果減去48存入,并記錄進(jìn)位為0

            3)如果兩個(gè)數(shù)字的位數(shù)不相同,那么需要求出最后一位可能的進(jìn)位
            比如5+96=101
            4)進(jìn)位為1,那么和之前需要輸出一個(gè)1
            5)輸出兩個(gè)大數(shù)的和

            下面是具體代碼


            Code:

            [Ctrl+A Select All]



            補(bǔ)充:在ubuntu下用gcc編譯通過(guò)
            部分演示結(jié)果

            falcon@falcon:~/program/c/code/mylove$ gcc -o add_LN add_LN.c
            falcon@falcon:~/program/c/code/mylove$ ./add_LN
            Please input two Large Number less than 10000 bit
            5
            6
            兩數(shù)之和為:
            11
            falcon@falcon:~/program/c/code/mylove$ ./add_LN
            Please input two Large Number less than 10000 bit
            877848515165484151
            996527784841515184
            兩數(shù)之和為:
            1874376300006999335
            falcon@falcon:~/program/c/code/mylove$ ./add_LN
            Please input two Large Number less than 10000 bit
            8995951
            784784987951252178485215254798749874984185416845865215187484520512
            兩數(shù)之和為:
            784784987951252178485215254798749874984185416845865215187493516463
            falcon@falcon:~/program/c/code/mylove$ ./add_LN
            Please input two Large Number less than 10000 bit
            5
            96
            兩數(shù)之和為:
            101

            guest 發(fā)表于 2007-11-20 23:38
            #2

            你的C語(yǔ)言代碼有點(diǎn)小錯(cuò)誤!就是在那段:
                if(equal==0)
                {
                    Temp=LN[flag1][LN_Len[flag1]+i]+jw;
                    if(Temp>=58)
                    {
                          jw=1;
                          LN[flag1][LN_Len[flag1]+i]=Temp-10;
                    }
                    else
                    {
                          jw=0;
                          LN[flag1][LN_Len[flag1]+i]=Temp;
                    }
                             
                }

            缺少了對(duì)一直有進(jìn)位即JW=1時(shí)候的累加!應(yīng)該加上個(gè)while循環(huán):
                if(equal==0)
                {
                          while(j>0 && jw==1)
                          {
                    Temp=LN[flag1][j+i]+jw;
                    if(Temp>=58)
                    {
                          jw=1;
                          LN[flag1][j+i]=Temp-10;
                    }
                    else
                    {
                          jw=0;
                          LN[flag1][j+i]=Temp;
                    }
                             j--;
                          }

            并且初始j=LN_Len[flag1]

            歡迎訪問(wèn)blog.sina.com.cn/Fanmcgrady與我交流!呵呵~~謝謝你的幫助!

            posted @ 2008-03-14 16:02 隨意門 閱讀(545) | 評(píng)論 (0)編輯 收藏
            如何用VC編寫DLL動(dòng)態(tài)鏈接庫(kù)文件?

            作者: falcon   發(fā)表日期: 2006-04-24 14:51   復(fù)制鏈接



            引言

            前不久剛學(xué)會(huì)了如何用VB編寫DLL動(dòng)態(tài)鏈接庫(kù),但是用vb編寫動(dòng)態(tài)鏈接庫(kù)比較麻煩些。下面我們?cè)賹W(xué)習(xí)一下如何用vc編寫dll動(dòng)態(tài)鏈接庫(kù),并且通過(guò)vc或者vb調(diào)用

            正文

            這里主要介紹兩個(gè)東東
            第一:用vc編寫動(dòng)態(tài)鏈接庫(kù),用vc調(diào)用
            第二:用vb編寫動(dòng)態(tài)鏈接庫(kù),用vb調(diào)用

            一、用vc編寫動(dòng)態(tài)鏈接庫(kù),用vc調(diào)用

            1、創(chuàng)建DLL文件,命名為FIRSTDLL

            1)打開(kāi)visual c++ 6.0通過(guò)new創(chuàng)建一個(gè)win30 Dynamic-link Libary的工程,命名為FIRSTDLL
            2)接著選擇最后一個(gè)選項(xiàng),讓系統(tǒng)幫我們創(chuàng)建一些必要的文件
            3)把FIRSTDLL.cpp用下面的代碼覆蓋


            Code:

            [Ctrl+A Select All]


            4)接著我們?cè)贔IRSTDLL.h頭文件里頭用下面的代碼覆蓋


            Code:

            [Ctrl+A Select All]


            5)好拉,我們現(xiàn)在可以編譯FIRSTDLL.cpp文件拉,到debug目錄下看看,是不是已經(jīng)生成拉我們需要的FIRSTDLL.dll拉

            2、通過(guò)vb編寫一個(gè)函數(shù)來(lái)調(diào)用該DLL,該函數(shù)為USEFIRSTDLL

            1)同樣通過(guò)new創(chuàng)建一個(gè)工程,該工程為win30 application,命名USEFIRSTDLL
            2)在USEFIRSTDLL.cpp文件中用如下代碼覆蓋


            Code:

            [Ctrl+A Select All]



            好拉,到這里第一部分介紹完拉
            下面介紹第二部分


            二、用vc編寫動(dòng)態(tài)鏈接庫(kù),用vb調(diào)用

            在介紹這個(gè)之前必須聲明的是(引用自下面的參考資料)

            一個(gè)DLL中的函數(shù)要想被VB調(diào)用,必須滿足兩個(gè)條件:一是調(diào)用方式為stdcall,另一個(gè)是必須是export的。要做到第一條,只須在函數(shù)聲明前加上__stdcall關(guān)鍵字。如:
              short __stdcall sample(short nLen, short *buffer)
              要做到第二條,需要在*.def文件中加上如下的幾行:
              EXPORTS
              sample @1
              這里的sample是你要在VB中調(diào)用的函數(shù)名,@1表示該函數(shù)在DLL中的編號(hào),每個(gè)函數(shù)都不一樣。注意這里的函數(shù)名是區(qū)分大小寫的。


            1、下面我們類似一創(chuàng)建名為SecondDll的DLL文件

            1)創(chuàng)建SecondDll,代碼如下:


            Code:

            [Ctrl+A Select All]



            2)往我們的工程里頭添加一個(gè)SecondDll.def文件,內(nèi)容如下


            Code:

            [Ctrl+A Select All]


            解釋一下哦:
            @1是表示Max函數(shù)在DLL中函數(shù)組中是第一個(gè)函數(shù),具體見(jiàn)參考資料

            ok,保存
            編譯、創(chuàng)建我們的SecondDll.dll

            2、通過(guò)Vb調(diào)用SecondDll.dll文件,來(lái)求兩個(gè)數(shù)中的最大者

            我們直接 編寫一段代碼如下哦


            Code:

            [Ctrl+A Select All]


            看到效果沒(méi)有啊,在我們的窗體標(biāo)題中顯示拉:"最大值是9"

            到這里我們的工作接結(jié)束拉,不過(guò)要熟練掌握還得多編寫程序拉,下面是我在學(xué)習(xí)時(shí)的參考資料,非常詳細(xì)哦。
            在這里,我真的是要謝謝那些專家們?yōu)槲覀兠赓M(fèi)提供了這么多參考資料,大家要好好珍惜才是,呵呵。


            參考資料:
            1)基于Visual C++6.0的DLL編程實(shí)現(xiàn) http://hegeng2000.blogchina.com/3807138.html
            2)VB和VC混合編程 http://www.china-askpro.com/msg1/qa72.shtml

            posted @ 2008-03-14 16:00 隨意門 閱讀(1718) | 評(píng)論 (0)編輯 收藏
            linux下網(wǎng)絡(luò)編程學(xué)習(xí)——入門實(shí)例

            作者: falcon   發(fā)表日期: 2006-04-14 09:54   復(fù)制鏈接



            是不是還對(duì)用c怎么實(shí)現(xiàn)網(wǎng)絡(luò)編程感到神秘莫測(cè)阿,我們這里就要撕開(kāi)它神秘的面紗,呵呵。

            一起來(lái):

            誒,不要著急,我們先來(lái)介紹一些網(wǎng)絡(luò)程序的主要執(zhí)行過(guò)程,主要是便于大家更好的理解下面的程序?qū)嵗?:

            1)系統(tǒng)啟動(dòng)服務(wù)器執(zhí)行。服務(wù)器完成一些初始化操作,然后進(jìn)入睡眠狀態(tài),等待客戶機(jī)請(qǐng)求。
            2)在網(wǎng)絡(luò)的某臺(tái)機(jī)器上,用戶執(zhí)行客戶機(jī)程序
            3)客戶機(jī)進(jìn)行與服務(wù)器進(jìn)程建立一條連接
            4)連接建立后,客戶機(jī)通過(guò)網(wǎng)路向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求某種服務(wù)。
            5)服務(wù)器接收到客戶機(jī)的請(qǐng)求后,根據(jù)客戶機(jī)請(qǐng)求的內(nèi)容進(jìn)行相應(yīng)的處理,然后將處理結(jié)果返回。
            6)服務(wù)器斷開(kāi)與客戶機(jī)的連接,繼續(xù)睡眠,等待其他客戶機(jī)的請(qǐng)求。

            現(xiàn)在介紹一個(gè)實(shí)例

            功能:實(shí)現(xiàn)簡(jiǎn)單的服務(wù)器-客戶機(jī)編程,客戶機(jī)發(fā)送連接請(qǐng)求后接受到連接成功信息。
            代碼包括兩部分,服務(wù)器部分(service.c)和客戶機(jī)部分(client.c)



            Code:

            [Ctrl+A Select All]




            Code:

            [Ctrl+A Select All]



            下面我們來(lái)編譯執(zhí)行看看效果哦

            編譯:
            #gcc -o service service.c
            #gcc -o client client.c
            修改執(zhí)行權(quán)限
            #chmod 770 service
            #chmod 770 client
            執(zhí)行
            現(xiàn)執(zhí)行服務(wù)器端哦
            #./service
            另開(kāi)一個(gè)命令行窗口,連接服務(wù)器的3490端口
            #./client localhost
            呵呵,看到效果了吧
            服務(wù)器端:

            server: got connection from 127.0.0.1

            客戶端

            read: Hello,Network!

            [注:以上程序在mandriva linux 2006下調(diào)試通過(guò)]

            從此踏上linux下的網(wǎng)絡(luò)編程之路,祝賀你一帆風(fēng)順...
            Good Luck,Babies

            posted @ 2008-03-14 15:59 隨意門 閱讀(4726) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題
            共9頁(yè): 1 2 3 4 5 6 7 8 9 
            久久亚洲国产最新网站| 97久久香蕉国产线看观看| 久久久久亚洲AV成人网人人网站| 很黄很污的网站久久mimi色| 伊人久久大香线蕉综合网站| 精品多毛少妇人妻AV免费久久| 无码人妻久久一区二区三区免费| 国产精品久久一区二区三区| 国产叼嘿久久精品久久| 一极黄色视频久久网站| 久久综合香蕉国产蜜臀AV| 香蕉久久夜色精品国产小说| 亚洲v国产v天堂a无码久久| 伊人久久大香线蕉综合5g| 91精品国产高清久久久久久io | 99久久国产综合精品网成人影院 | 久久久久亚洲av无码专区| 亚洲欧美精品伊人久久| 一级女性全黄久久生活片免费 | 少妇高潮惨叫久久久久久| 久久精品国产亚洲欧美| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久免费高清视频| 欧美日韩精品久久免费| 国产精品禁18久久久夂久| 久久天天日天天操综合伊人av| 久久水蜜桃亚洲av无码精品麻豆| 久久久久亚洲?V成人无码| 久久久久久国产精品无码超碰| 精品国产一区二区三区久久蜜臀| 日产精品久久久久久久性色| 久久嫩草影院免费看夜色| www.久久热.com| 久久这里只有精品18| 日韩中文久久| 国产 亚洲 欧美 另类 久久 | 久久噜噜久久久精品66| 好属妞这里只有精品久久| 国内精品人妻无码久久久影院导航| 久久久久婷婷| 国产成人综合久久精品尤物|