基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計_第1頁
基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計_第2頁
基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計_第3頁
基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計_第4頁
基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

簡單應(yīng)用系統(tǒng)學(xué)年設(shè)計任務(wù)書學(xué)院計算機(jī)與信息工程學(xué)院專業(yè)網(wǎng)絡(luò)工程課程名稱簡單應(yīng)用系統(tǒng)題目基于Socket的HTTP請求監(jiān)聽程序的設(shè)計實(shí)現(xiàn)完成期限自2015年7月9日至2015年8月30日共8周內(nèi)容及任務(wù)一、項目的目的用java編寫一個監(jiān)聽程序,監(jiān)聽指定的端口,通過瀏覽器如http://localhost:7777來訪問時,可以把請求到的內(nèi)容記錄下來,記錄可以存文件,sqlit,mysql數(shù)據(jù)庫,然后把接受到的信息在瀏覽器中顯示出來二、項目任務(wù)的主要內(nèi)容和要求監(jiān)聽指定的端口,通過瀏覽器如http://localhost:7777來訪問時,可以把請求到的內(nèi)容記錄下來,記錄可以存文件,sqlit,mysql數(shù)據(jù)庫,然后把接受到的信息在瀏覽器中顯示出來。實(shí)現(xiàn)本程序需要了解網(wǎng)絡(luò)基礎(chǔ)知識、網(wǎng)絡(luò)安全基礎(chǔ)知識,掌握C/S結(jié)構(gòu)的工作特點(diǎn),掌握高級語言及網(wǎng)絡(luò)編程知識,可以選擇VisualC++、C或Java等語言實(shí)現(xiàn)。三、項目設(shè)計(研究)思路1.用到的主要技術(shù):Socket,線程,數(shù)據(jù)庫,IO操作2.設(shè)計思路:我們?nèi)绾蝸碓O(shè)計這個小系統(tǒng),這個系統(tǒng)包含三部分的內(nèi)容,一個是監(jiān)聽端口,二是記錄日志,三是數(shù)據(jù)回顯,端口監(jiān)聽第一想到的就是Socket編程了,數(shù)據(jù)回顯也是一樣的,無非是把當(dāng)前請求客戶端的socket獲取到,然后把消息通過流輸出出去,日志的記錄因?yàn)槭且喾N實(shí)現(xiàn)策略,這里我們使用了一個觀察者模式來實(shí)現(xiàn),服務(wù)器可以添加任意多個觀察著,因此有著很靈活的擴(kuò)展性,在實(shí)例程序中我們分別提供了ConsoleRecordHandler--直接把獲取到的信息打印到控制臺,和存放數(shù)據(jù)庫的方式-MysqlRecordHandler,當(dāng)然你也可以分別提供基于文件的實(shí)現(xiàn)。首先來看我們系統(tǒng)的類圖四、具體成果形式和要求學(xué)年設(shè)計說明書和相關(guān)程序;進(jìn)度安排起止日期工作內(nèi)容7.9分析課題,尋找相關(guān)資料。8.25-8.27學(xué)習(xí)相關(guān)知識,打下基礎(chǔ)。8.28——8.30設(shè)計解決方案并調(diào)試。主要參考資料[1]《Windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù)》朱雁輝編著電子工業(yè)出版社[2]《監(jiān)聽與隱藏》求實(shí)科技譚思亮編著人民郵電出版社[3]《計算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)》袁津生吳硯農(nóng)編著人民郵電出版社[4]《VisualC++6.0技術(shù)內(nèi)幕》[美]DavidJ.Kruglinski,ScotWingo,GeorgeShepherd編著希望圖書創(chuàng)作室譯北京希望電子出版社指導(dǎo)教師意見(簽字):年月日系(教研室)主任意見(簽字):年月日簡單應(yīng)用系統(tǒng)學(xué)年設(shè)計說明書(或論文)(封面)學(xué)院名稱:計算機(jī)與信息工程學(xué)院班級名稱:網(wǎng)絡(luò)工程1班學(xué)生姓名:學(xué)號:題目:基于Socket的HTTP請求監(jiān)聽程序的設(shè)計實(shí)現(xiàn)指導(dǎo)教師姓名:陳海寶起止日期:2015.7.9—2015.8.30目錄2.1.課題要求 12.2課題分析 22.3課題解決方案 23.1概要設(shè)計 23.2啟動MySQL,創(chuàng)建數(shù)據(jù)庫和表 74.1測試結(jié)果 13第一部分:正文部分一、選題背景隨著計算機(jī)的發(fā)展,越來越多的技術(shù)體現(xiàn)在現(xiàn)有的網(wǎng)絡(luò)布局當(dāng)中,并且起到了引領(lǐng)計算機(jī)科技領(lǐng)域的作用。為了讓學(xué)生了解基本網(wǎng)絡(luò)構(gòu)建的相關(guān)知識,理解客戶機(jī),服務(wù)器的運(yùn)行原理,因而選用了基于Socket的HTTP的請求監(jiān)聽程序的設(shè)計這一課題來讓學(xué)生自主的去理解這些網(wǎng)絡(luò)知識。為了實(shí)現(xiàn)這一課題,讓本地機(jī)既作為客戶機(jī),又作為服務(wù)器來使用,能夠讓學(xué)生深刻了解服務(wù)器是如何響應(yīng)客戶端的請求,并且監(jiān)聽指定的端口的。在此同時,也能讓學(xué)生掌握住一些基本的簡單的設(shè)計網(wǎng)頁的HTML語言和JSP語言的知識。二、設(shè)計理念1.課題要求監(jiān)聽指定的端口,通過瀏覽器如http://localhost:7777來訪問時,可以把請求到的內(nèi)容記錄下來,記錄可以存文件,sqlit,mysql數(shù)據(jù)庫,然后把接受到的信息在瀏覽器中顯示出來。2.課題分析首先,監(jiān)聽指定端口可以采用監(jiān)聽服務(wù)器的端口號來實(shí)現(xiàn);通過瀏覽器來訪問并把信息在瀏覽器中顯示出來,這個可以建立一個簡單的網(wǎng)站,然后由本機(jī)的客戶端來對服務(wù)器進(jìn)行訪問[2],并且把訪問的內(nèi)容通過服務(wù)器發(fā)送給本機(jī)的客戶端,也就是采用C/S模式;記錄可以存文件或者是數(shù)據(jù)庫這一點(diǎn),可以通過JDBC的方式連接數(shù)據(jù)庫,然后更新里面的內(nèi)容。3.課題解決方案(1)相關(guān)軟件:Tomcat6.0(或6.0版本以上)、MySQL5.0數(shù)據(jù)庫(其他數(shù)據(jù)庫也可)。(2)設(shè)計思路:首先,安裝并啟動以上兩個軟件,在數(shù)據(jù)庫中創(chuàng)建一個Student數(shù)據(jù)庫和兩張表(可以用MySQL相關(guān)的編輯軟件制作表):user表,information表,在information表中加入一些數(shù)據(jù);其次,用txt文本編寫JSP文件和Tag文件(也可以下載相關(guān)的JSP文件編輯軟件),在Tag文件中添加數(shù)據(jù)庫連接語句;最后,用瀏覽器進(jìn)行測試。(3)流程圖如下:登錄登錄用戶名是否存在開始登錄成功查詢所查信息是否存在顯示信息結(jié)束注冊重建數(shù)據(jù)庫信息是是否否圖2-3-1總體流程圖三、過程論述3.1概要設(shè)計httpServe類是我們的核心類,他實(shí)現(xiàn)了Runnable接口,因此有著更高的性能,在循環(huán)中不斷的去輪詢指定端口,構(gòu)造方法比較簡單,只需要一個要監(jiān)聽的端口號即可,還有兩個用于觸發(fā)監(jiān)聽和停止程序運(yùn)行的方法stop()&start(),這兩個方法也比較簡單,只是簡單的給標(biāo)志位賦值即可,我們這個程序是基于Oserver模式的簡化版本,HttpServer本身是一個被觀察的對象(Subject),當(dāng)這個Subject有變化時(獲取到客戶端請求時)要通知監(jiān)聽器(我們的RecordHandler)去作操作(寫數(shù)據(jù)庫還是寫文件或是直接控制臺輸出),極大增加了系統(tǒng)的靈活性和易測試性(1)HttpServer類代碼package

com.crazycoder2010.socket;

import

java.io.BufferedReader;

import

java.io.IOException;

import

java.io.InputStreamReader;

import

java.io.PrintWriter;

import

.ServerSocket;

import

.Socket;

import

java.sql.Date;

import

java.util.ArrayList;

import

java.util.List;

/**

*

服務(wù)器監(jiān)聽對象,對某個端口進(jìn)行監(jiān)聽,基于線程的實(shí)現(xiàn)

*

*

@author

Kevin

*

*/

public

class

HttpServer

implements

Runnable

{

/**

*

服務(wù)器監(jiān)聽

*/

private

ServerSocket

serverSocket;

/**

*

標(biāo)志位,表示當(dāng)前服務(wù)器是否正在運(yùn)行

*/

private

boolean

isRunning;

/**

*

觀察者

*/

private

List<RecordHandler>

recordHandlers

=

new

ArrayList<RecordHandler>();

public

HttpServer(int

port)

{

try

{

serverSocket

=

new

ServerSocket(port);

}

catch

(IOException

e)

{

e.printStackTrace();

}

}

public

void

stop()

{

this.isRunning

=

false;

}

public

void

start()

{

this.isRunning

=

true;

new

Thread(this).start();

}

@Override

public

void

run()

{

while

(isRunning)

{//一直監(jiān)聽,直到受到停止的命令

Socket

socket

=

null;

try

{

socket

=

serverSocket.accept();//如果沒有請求,會一直hold在這里等待,有客戶端請求的時候才會繼續(xù)往下執(zhí)行

//

log

BufferedReader

bufferedReader

=

new

BufferedReader(

new

InputStreamReader(socket.getInputStream()));//獲取輸入流(請求)

StringBuilder

stringBuilder

=

new

StringBuilder();

String

line

=

null;

while

((line

=

bufferedReader.readLine())

!=

null

&&

!line.equals(""))

{//得到請求的內(nèi)容,注意這里作兩個判斷非空和""都要,只判斷null會有問題

stringBuilder.append(line).append("/n");

}

Record

record

=

new

Record();

record.setRecord(stringBuilder.toString());

record.setVisitDate(new

Date(System.currentTimeMillis()));

notifyRecordHandlers(record);//通知日志記錄者對日志作操作

//

echo

PrintWriter

printWriter

=

new

PrintWriter(

socket.getOutputStream(),

true);//這里第二個參數(shù)表示自動刷新緩存

doEcho(printWriter,

record);//將日志輸出到瀏覽器

//

release

printWriter.close();

bufferedReader.close();

socket.close();

}

catch

(IOException

e)

{

e.printStackTrace();

}

}

}

/**

*

將得到的信寫回客戶端

*

*

@param

printWriter

*

@param

record

*/

private

void

doEcho(PrintWriter

printWriter,

Record

record)

{

printWriter.write(record.getRecord());

}

/**

*

通知已經(jīng)注冊的監(jiān)聽者做處理

*

*

@param

record

*/

private

void

notifyRecordHandlers(Record

record)

{

for

(RecordHandler

recordHandler

:

this.recordHandlers)

{

recordHandler.handleRecord(record);

}

}

/**

*

添加一個監(jiān)聽器

*

*

@param

recordHandler

*/

public

void

addRecordHandler(RecordHandler

recordHandler)

{

this.recordHandlers.add(recordHandler);

}

}

(2)Record類非常簡單,只是作為參數(shù)傳遞的對象來用package

com.crazycoder2010.socket;

import

java.sql.Date;

public

class

Record

{

private

int

id;

private

String

record;

private

Date

visitDate;

public

int

getId()

{

return

id;

}

public

void

setId(int

id)

{

this.id

=

id;

}

public

String

getRecord()

{

return

record;

}

public

void

setRecord(String

record)

{

this.record

=

record;

}

public

Date

getVisitDate()

{

return

visitDate;

}

public

void

setVisitDate(Date

visitDate)

{

this.visitDate

=

visitDate;

}

}

(3)RecordHandler接口,統(tǒng)一監(jiān)聽接口,非常簡單package

com.crazycoder2010.socket;

/**

*

獲取到訪問信息后的處理接口

*

@author

Kevin

*

*/

public

interface

RecordHandler

{

public

void

handleRecord(Record

record);

}

(4)ConsoleRecordHandler實(shí)現(xiàn),直接System打印輸出,在我們作測試時非常有用package

com.crazycoder2010.socket;

public

class

ConsoleRecordHandler

implements

RecordHandler

{

@Override

public

void

handleRecord(Record

record)

{

System.out.println("@@@@@@@");

System.out.println(record.getRecord());

}

}

(5)MysqlRecordHandler,數(shù)據(jù)庫實(shí)現(xiàn),定義了要對數(shù)據(jù)庫操作所需要的幾個基本屬性url,username,password,加載驅(qū)動的程序我們放在了靜態(tài)代碼短中,這個東東嘛,只要加載一次就ok了package

com.crazycoder2010.socket;

import

java.sql.Connection;

import

java.sql.PreparedStatement;

import

java.sql.SQLException;

public

class

MysqlRecordHandler

implements

RecordHandler

{

static

{

try

{

Class.forName("com.mysql.jdbc.Driver");

}

catch

(ClassNotFoundException

e)

{

e.printStackTrace();

}

}

private

static

final

String

NEW_RECORD

=

"insert

into

log(record,visit_date)

values

(?,?)";

/**

*

數(shù)據(jù)庫訪問url

*/

private

String

url;

/**

*

數(shù)據(jù)庫用戶名

*/

private

String

username;

/**

*

數(shù)據(jù)庫密碼

*/

private

String

password;

public

void

setUrl(String

url)

{

this.url

=

url;

}

public

void

setUsername(String

username)

{

this.username

=

username;

}

public

void

setPassword(String

password)

{

this.password

=

password;

}

@Override

public

void

handleRecord(Record

record)

{

Connection

connection

=

ConnectionFactory.getConnection(url,

username,

password);

PreparedStatement

preparedStatement

=

null;

try

{

preparedStatement

=

connection.prepareStatement(NEW_RECORD);

preparedStatement.setString(1,

record.getRecord());

preparedStatement.setDate(2,

record.getVisitDate());

preparedStatement.executeUpdate();

}

catch

(SQLException

e)

{

e.printStackTrace();

}

finally

{

ConnectionFactory.release(preparedStatement);

ConnectionFactory.release(connection);

}

}

}

(6)ConnectionFactory類,我們的數(shù)據(jù)庫連接工廠類,定義了幾個常用的方法,把數(shù)據(jù)庫連接獨(dú)立到外部單獨(dú)類的好處在于,我們可以很靈活的替換連接的生成方式--如我們可以從連接池中獲取一個,而我們的數(shù)據(jù)庫操作卻只關(guān)注Connection本身,從而達(dá)到動靜分離的效果package

com.crazycoder2010.socket;

import

java.sql.Connection;

import

java.sql.DriverManager;

import

java.sql.PreparedStatement;

import

java.sql.SQLException;

/**

*

創(chuàng)建數(shù)據(jù)庫連接的工廠類

*

*

@author

Kevin

*

*/

public

class

ConnectionFactory

{

public

static

Connection

getConnection(String

url,

String

username,

String

password)

{

try

{

return

DriverManager.getConnection(url,

username,

password);

}

catch

(SQLException

e)

{

e.printStackTrace();

}

return

null;

}

/**

*

釋放連接

*

*

@param

connection

*/

public

static

void

release(Connection

connection)

{

if

(connection

!=

null)

{

try

{

connection.close();

connection

=

null;

}

catch

(SQLException

e)

{

e.printStackTrace();

}

}

}

/**

*

關(guān)閉查詢語句

*

*

@param

preparedStatement

*/

public

static

void

release(PreparedStatement

preparedStatement)

{

if

(preparedStatement

!=

null)

{

try

{

preparedStatement.close();

preparedStatement

=

null;

}

catch

(SQLException

e)

{

e.printStackTrace();

}

}

}

}

init.sql我們的數(shù)據(jù)庫建表腳本,只是為了演示,一個表就好CREATE

TABLE

`logs`.`log`

(

`id`

INT(10)

NOT

NULL

AUTO_INCREMENT,

`record`

VARCHAR(1024)

NOT

NULL,

`visit_date`

DATETIME

NOT

NULL,

PRIMARY

KEY

(`id`)

)

ENGINE

=

MyISAM;

AppLuancher類,是時候把這幾個模塊高到一起跑起來的時候了,我們首先創(chuàng)建了一個服務(wù)器端,然后給服務(wù)器創(chuàng)建了兩個監(jiān)聽器,然后啟動服務(wù)器,這個時候我們的HttpServer已經(jīng)開始監(jiān)聽7777端口了!

package

com.crazycoder2010.socket;

public

class

AppLauncher

{

/**

*

@param

args

*/

public

static

void

main(String[]

args)

{

HttpServer

httpServer

=

new

HttpServer(7777);

httpServer.addRecordHandler(new

ConsoleRecordHandler());

httpServer.addRecordHandler(createMysqlHandler());

httpServer.start();

}

private

static

RecordHandler

createMysqlHandler(){

MysqlRecordHandler

handler

=

new

MysqlRecordHandler();

handler.setUrl("jdbc:mysql://localhost:3306/logs");

handler.setUsername("root");

handler.setPassword("");

return

handler;

}

}

(9)打開瀏覽器,輸入http://localhost:7777我們看到控制臺輸出了一堆的文字GET/HTTP/1.1Host:localhost:7777Connection:keep-aliveCache-Control:max-age=0User-Agent:Mozilla/5.0(X11;U;Linuxi686;en-US)AppleWebKit/534.16(KHTML,likeGecko)Chrome/10.0.648.127Safari/534.16Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Encoding:gzip,deflate,sdchAccept-Language:zh-CN,zh;q=0.8Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3

3.2MySQL,創(chuàng)建數(shù)據(jù)庫和表圖3-2-2輸入數(shù)據(jù)圖3-2-1創(chuàng)建表創(chuàng)建Student數(shù)據(jù)庫,user表和information表。圖3-2-2輸入數(shù)據(jù)圖3-2-1創(chuàng)建表圖3-2-2輸入數(shù)據(jù)圖3-2-3顯示表內(nèi)信息四、結(jié)果分析1.開啟服務(wù)器后,輸入地址(這里的端口號選用為8080),運(yùn)行網(wǎng)頁,結(jié)果如下:(1)首頁圖4-1-1首頁這就表示index.jsp文件成功運(yùn)行。(2)用戶注冊圖4-1-2注冊界面圖4-1-3數(shù)據(jù)庫顯示register.jsp文件成功運(yùn)行,這里我輸入了用戶名:Lucy,密碼為123456。查看數(shù)據(jù)庫中的user表。圖4-1-3數(shù)據(jù)庫顯示(3)用戶登錄圖4-1-4登錄界面這表示Lucy已經(jīng)成功登陸,當(dāng)密碼錯誤或者是用戶名不存在時,會出現(xiàn)以下錯誤提示:圖4-1-5登錄失敗(4)學(xué)生查詢圖4-1-6查詢信息圖4-1-6查詢信息這里是將事先的infortmation表中的信息表示出來。圖4-1-7顯示數(shù)據(jù)庫信息圖4-1-7顯示數(shù)據(jù)庫信息至此,整個系統(tǒng)運(yùn)行順利。五、結(jié)論(或總結(jié))這次整個的基于Socket的HTTP請求監(jiān)聽程序基本滿足了學(xué)年設(shè)計的要求,能夠很好地對本機(jī)指定的端口進(jìn)行監(jiān)聽,然后通過瀏覽器將所要返回的信息一一返回給客戶機(jī)。通過本次學(xué)年設(shè)計,使我對《計算機(jī)網(wǎng)絡(luò)》中的C/S模式有了更深入的了解,但是還需加強(qiáng)實(shí)踐。此外,在本次學(xué)年設(shè)計中,我明白了自學(xué)能力的重要性,設(shè)計思路是前提,只有有了完整的思路才能知道自己下一步應(yīng)該做什么,其次,良好的編程基礎(chǔ)也是關(guān)鍵,測試與調(diào)整也是在做系統(tǒng)的過程中必不可少的環(huán)節(jié)。在此過程中,我深深感覺到這些東西的重要性和實(shí)用性。通過這段時間的自學(xué),我對網(wǎng)頁制作的基礎(chǔ)知識有了很好的掌握[5],這對我以后的網(wǎng)絡(luò)編輯會有一個很大的用處,學(xué)之所思,思之所用,用之所得,這就是我最大的感悟。第三部分:參考文獻(xiàn)[1]謝希仁.計算機(jī)網(wǎng)絡(luò)(第六版).北京:電子工業(yè)出版社.2011.[2]滿昌勇.計算機(jī)網(wǎng)絡(luò)基礎(chǔ).北京:清華大學(xué)出版社.2010.[3]趙生慧.Java面向?qū)ο蟪绦蛟O(shè)計(第二版).北京:中國水利水電出版社.2010.[4]張躍平耿祥義.JSP程序設(shè)計.北京:清華大學(xué)出版社.[5]BillScott/TheresaNeil.Web界面設(shè)計.北京:電子工業(yè)出版社.學(xué)生簽名:填表日期:年月日第四部分:指導(dǎo)教師評語第五部分:成績評定指導(dǎo)教師簽名:填表日期:年月日基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運(yùn)動控制系統(tǒng)設(shè)計Pico專用單片機(jī)核的可測性設(shè)計研究基于MCS-51單片機(jī)的熱量計基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實(shí)驗(yàn)中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫爾斯碼自動譯碼系統(tǒng)設(shè)計與研究基于單片機(jī)的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究與開發(fā)基于Cygnal單片機(jī)的μC/OS-Ⅱ的研究基于單片機(jī)的一體化智能差示掃描量熱儀系統(tǒng)研究基于TCP/IP協(xié)議的單片機(jī)與Internet互聯(lián)的研究與實(shí)現(xiàn)變頻調(diào)速液壓電梯單片機(jī)控制器的研究基于單片機(jī)γ-免疫計數(shù)器自動換樣功能的研究與實(shí)現(xiàn)基于單片機(jī)的倒立擺控制系統(tǒng)設(shè)計與實(shí)現(xiàn)單片機(jī)嵌入式以太網(wǎng)防盜報警系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論