現在編寫一個簡單是示例,展現windows客戶端、Linux伺服器、Linux字符設備驅動程序,三者作為一個整體,完成某種功能。
所要展現的功能是:Windows客戶端輸入一個出生年份,網絡傳輸給Linux伺服器,Linux伺服器又將該出生年份傳遞給Linux字符設備驅動程序內核模塊,Linux字符設備驅動程序計算出年齡,Linux伺服器讀取到該年齡值,併網絡傳輸給Windows客戶端顯示、
其一、Linux字符設備驅動程序(C語言)
Linux字符設備驅動程序,在這裡的功能很簡單,就是根據出生年份計算年齡。
1、文件名:d9.c,代碼如下:
2、Makefile文件的內容如下:
3、make生成d9.ko內核模塊文件
4、insmod d9.ko命令加載內核模塊
5、創建設備文件:mknod /dev/d9dev c 51 0
如果不是很理解,可以查看文檔1:A002 Linux 字符設備驅動開發(講解與編寫)
如果不是很理解,可以查看視頻2:18 第一部分 字符設備驅動程序框架19 第二部分 應用程式與字符設備驅動程序的數據交換(int)
其二、Linux伺服器程序(C語言)
Linux伺服器程序的源文件名:server9.c,用於接收來自客戶端的文本,並訪問字符設備驅動程序,代碼如下:
其中socket建立套接字,使用IPV4,使用TCP協議;bind是綁定伺服器IP和埠,使用本機任一一個IP位址,埠是1234,htons函數的意思是主機字節序轉成網絡字節序,short類型;listen是監聽,支持5個TCP鏈路同時存在;accept等待客戶端連接進來,返回值表示這個客戶端與伺服器之間的TCP鏈路,以後用這個值就可以對該TCP鏈路進行讀寫數據了,也就是對客戶端讀寫數據。
其中/dev/d9dev是字符設備驅動程序所對應的的設備文件,對該文件的讀寫操作,就是調用相應字符設備驅動程序的讀和寫函數。
編譯並執行:
gcc server9.c
./a.out
由於此時驅動已經在內核了,設備文件也已經存在了,Linux伺服器程序可以正常運行了。C001 Java命令行方式與Linux伺服器連通
其三、windows客戶端(Java語言)
windows客戶端採用Java編寫,源文件名:c.java,命令行方式編譯。其中Socket("192.168.137.129",1234)表明要連接的伺服器是192.168.137.129,伺服器埠是1234
代碼如下:
使用命令行方式編譯,執行: