軟件工程畢業(yè)論文-網(wǎng)絡五子棋的設計與實現(xiàn)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  (20 屆)</b></p><p>  網(wǎng)絡五子棋的設計與實現(xiàn)</p><p><b>  摘要</b></p><p>  1997年,伴隨計算機技術和網(wǎng)絡的發(fā)展,第一款圖形網(wǎng)絡游戲《網(wǎng)絡創(chuàng)世

2、界》問世,應用計算機與網(wǎng)絡的高尖端技術,融合傳統(tǒng)的試聽與數(shù)字娛樂精華,集娛樂,競技,互動于一體,迅速風靡全球。自此拉開網(wǎng)絡游戲的序幕。</p><p>  目前,PK已經(jīng)成為現(xiàn)在人生活的一部分,人們以不同的方式通過網(wǎng)絡來娛樂,休閑。五子棋是一種兩人對已的純策略型的棋類游戲,似起源于中國古代的傳統(tǒng)的黑白棋種之一,發(fā)展與日本,流行于歐美。通過一系列的變化,使五子棋這一簡單的游戲系統(tǒng)化,規(guī)范化,最終成為今天的職業(yè)連珠五

3、子棋,同事也成為一種國際比賽棋,它不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性,容易學會,趣味橫生,引人入勝。本程序是eclipse平臺下的一個小程序,使用JAVA語言,通過對Socket技術的理解,實現(xiàn)客戶端與服務器之間的鏈接,利用多線程技術來處理服務器與客戶端的數(shù)據(jù)傳輸,通信,實現(xiàn)程序的聊天內(nèi)容,是的客戶端和服務器之間能夠同步的進行處理。</p><p>  通過對本游戲的開發(fā),更深入的理解了面

4、向對象的概念以及面向對象預言的一些問題的優(yōu)勢,也對線程的理解更加理解。</p><p>  關鍵字:JAVA 線程 數(shù)據(jù)傳輸 五子棋 eclipse 網(wǎng)絡 socket</p><p><b>  Abstract</b></p><p>  In 1997, along with the development of computer tec

5、hnology and network, the first graphics network game "network world", the application of computer and network of sophisticated technology, the fusion of traditional audio-visual and digital entertainment essenc

6、e, entertainment, athletics, interactive as a whole, quickly catch on around the world. Since then kick network game.</p><p>  Currently, PK has become now a part of life, people in different ways through th

7、e network to entertainment and leisure. Gobang is one kind of two people to have pure strategy type chess game, originated in ancient Chinese traditional black white kind of like, one of the development in Japan, popular

8、 in Europe and the United States. Through a series of changes, the simple game gobang systematization, standardization and eventually become today's professional renju renju colleagues also become an </p><

9、p>  Through the development of this game, more in-depth understanding of the concept of object oriented and object oriented predicted that some of the problems of advantage, also understand more understanding of the t

10、hread.</p><p>  Key words: JAVA thread gobang the eclipse data transmission network</p><p><b>  目錄</b></p><p>  摘要·······

11、83;·························1</p><p>  Abstract······

12、;·························2</p><p><b>  1.概述 </b></p><p>

13、  1.1:五子棋的發(fā)展························4</p><p>  1.1.1五子棋的研究背景····

14、83;·················4</p><p>  1.1.2五子棋的研究意義·············

15、·········5</p><p>  1.2:傳統(tǒng)五子棋和網(wǎng)絡五子棋···················5</p>

16、<p>  1.3五子棋的稱謂·························5</p><p>  2開發(fā)環(huán)境與編程語言</p><

17、p>  2.1開發(fā)與運行環(huán)境························6</p><p>  2.1.1開發(fā)環(huán)境····&#

18、183;····················6</p><p>  2.1.2運行環(huán)境··········

19、83;··············6</p><p>  2.2編程語言·················

20、···········6</p><p>  3.網(wǎng)絡五子棋的需求分析與總體設計</p><p>  3.1需求分析··············

21、;·············8</p><p>  3.1.1功能需求··················

22、········8</p><p>  3.1.2用戶界面需求·······················

23、;·8</p><p>  3.2總體設計···························8</p><p&g

24、t;<b>  4.構架</b></p><p>  4.1客戶端的實現(xiàn)·························10</p>

25、;<p>  4.2客戶端的功能···························14</p><p>  4.3服務器端的實現(xiàn)

26、·························16</p><p>  4.4服務器端的功能······

27、;···················18</p><p>  4.5客戶端與服務器端的鏈接···········

28、··········19</p><p><b>  5.結論與體會</b></p><p>  5.1:經(jīng)驗總結·············

29、·············21</p><p>  5.2發(fā)開的心得體會··················

30、;······21</p><p>  參考文獻·························

31、3;····22</p><p><b>  1.概述</b></p><p><b>  1.1五子棋的發(fā)展</b></p><p>  五子棋相傳起源于四千多年前的堯帝時期,比圍棋的歷史還要悠久,可是早在“堯造圍棋”之前,民間就已有五子棋游戲。在上古的神話傳說中有“女媧造人,伏羲

32、做棋”一說,《增山海經(jīng)》中記載:“休輿之山有石焉,名曰帝臺之棋,五色而文狀鵪卵?!边h古以來就以漂亮的石子為棋,因而規(guī)則剪發(fā)的五子棋也可能出自當時,并是用石子作為棋子。亦有傳說,五子棋最初流行于少數(shù)民族地區(qū),以后漸漸演變成圍棋并在炎黃子孫后代中演變開來。</p><p>  五子棋不僅增強思維能力,體改智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短,平,快”,又有古典哲學的高深學問“陰陽易禮”

33、;既有簡單易學的特征,又為廣大人民群眾所喜聞樂見,又有深奧的技巧和高中水平的國際性比賽;棋文化源遠流長,具有東方的神秘河西方的直觀;既有“場”的概念,亦有“點”的鏈接。他是中西方的交流電,是古今哲學的結晶。</p><p>  隨著1996年中央電視臺(CCTV-5)《黑白世界-五子棋講座》的開播和中國五子棋網(wǎng)上比賽的開通,將世界連珠五子棋運動的最新狀況及時展現(xiàn)在眼前,為五子棋愛好者提供了盡情參與的機會,這無疑對

34、國內(nèi)的普及、發(fā)展起到了推動的作用。北京連珠五子棋體育文_化交流中心已擁有了22位國際段位棋手,他們肩負著新的歷史使命,不斷為中國五子棋愛好者提供立足國內(nèi)、面向世界、一展才華的機會。我國于1998年8月成功地舉辦了第二屆世界杯青少年錦標賽,1999年7月將在北京舉辦第六屆世界杯冠軍賽,2000年舉辦第三屆世界杯團體賽。在北京的帶動下,全國其他地區(qū)也先后成立了五子棋組織。河北廊坊地區(qū)成立了廊坊五子棋協(xié)會;天津市成立了由天津市體委領導的天津市

35、五子棋工作委員會;上海、云南、杭州等地也都成立了五子棋的組織。五子棋的發(fā)展在中國出現(xiàn)方興未艾之勢。</p><p>  1.1.1五子棋的研究背景</p><p>  隨著近幾年的軟件技術的不斷進步,不斷完善,軟件游戲的操作要求越來越簡單,大多數(shù)游戲普通人學幾分鐘就能玩,甚至連來年人也慢慢愛上了它。</p><p>  第二次世界大戰(zhàn)以后,電子計算機技術得到突飛猛進

36、的發(fā)展,在眾多國家中美國的計算機技術發(fā)展最為迅速。1946年世界第一臺數(shù)字計算機在美國賓夕法尼亞大學建造完成。電子計算機的問世,代表了電子數(shù)字計算機的到來,具有掛時代的意義。在1956年我國研制成功國產(chǎn)計算機。1958年和1959年我國先后研制成功國產(chǎn)小型和大型電子計算機。后來出現(xiàn)了繼承電路和大規(guī)模集成電路,是電子計算機一代一代實現(xiàn)更新,性能越來越高,計算速度越來越快,硬件方面的不斷發(fā)展促使了阮籍技術也迅速發(fā)展。目前,網(wǎng)絡上我們經(jīng)長看到

37、的大型3D網(wǎng)絡游和WEBGAME網(wǎng)頁游戲等都是通過3DMAX,MAYA,FLASH等編程語言像結合而發(fā)展出來的,所以叫游戲軟件。</p><p>  1.1.2五子棋的研究意義</p><p>  近年,國產(chǎn)網(wǎng)絡游戲發(fā)展迅速,出現(xiàn)了比較熱門的角色扮演類游戲、即時戰(zhàn)略類游戲、動作射擊類游戲等等。但是,國產(chǎn)網(wǎng)絡游戲在繼續(xù)迅猛發(fā)展的時候,也暴露出一些弊端,主要表現(xiàn)在網(wǎng)絡游戲產(chǎn)品的內(nèi)容和模式等方面

38、,如網(wǎng)游服務器負載太重、資源消耗太大、游戲內(nèi)容簡單、模式單調(diào)乏味、網(wǎng)絡對戰(zhàn)還不能實現(xiàn)等等。因為沒能提供用戶真正期望的開發(fā)環(huán)境。此外,隨著用戶量增加,服務器負載較大,造成了系統(tǒng)效率下降和健壯性的削弱,代價高,效率低,這些都是系統(tǒng)在網(wǎng)絡游戲發(fā)展上的瓶頸。此次開發(fā)網(wǎng)絡五子棋,使網(wǎng)游服務器負載減輕,資源消耗大大減少,實現(xiàn)了網(wǎng)絡中倆人的對戰(zhàn)。</p><p>  1.2 傳統(tǒng)五子棋和網(wǎng)絡五子棋</p><

39、;p>  傳統(tǒng)五子棋僅提供了“單人模式”和“雙人模式”。其中“單人模式”是指,人與計算機進行對弈,計算機按照事先編號的算法程序進行下棋;而“雙人模式”是指,兩個人通過交替使用同一臺計算機來進行下棋。無論哪種模式,都必須在同一臺計算機上來完成,無法異地下棋,因此叫單機五子棋。</p><p>  隨著網(wǎng)絡的迅猛發(fā)展,異地計算機開始通信,異地的用戶通過網(wǎng)絡來進行下棋,在勝負判別方面,單機版五子棋和網(wǎng)絡版五子棋并

40、沒有什么區(qū)別,只是網(wǎng)絡版的玩家雙方各自有一套勝負判別的程序。當一方玩家下一步棋后,他的勝負判別程序就執(zhí)行一次,然后再將落子的信息傳給對方,對方的勝負判別程序也將執(zhí)行一次。就這樣就完成一次勝負的判別過程。</p><p><b>  1.3五子棋的稱謂</b></p><p>  五子棋,日文亦有“連五子、五子連、串珠、五目、五目碰、五格、五石、五法、五聯(lián)、京棋”等多種

41、稱謂,英文則稱之為“FIR (Five In A Row的縮寫)、Gomoku(日語“五目”的羅馬拼音)、Gobang、connect 5、mo-rphion”。捷克語piskvorky,韓語omok……</p><p>  許多國家的人對五子棋都有不同的愛稱,例如,韓國人把五子棋稱為“情侶棋”,暗示情人之間下五子棋有利于增加情感的交流;歐洲人稱其為“紳士棋”,代表下五子棋的君子風度勝似紳士;日本人則稱其為“中老

42、年棋”,說明五子棋適合中老年人的生理特點和思維方式;美國人喜歡將五子棋稱為“商業(yè)棋”,也就是說,商人談生意時可邊下棋邊談生意,棋下完了生意也談成了。</p><p>  2.開發(fā)環(huán)境與編程語言</p><p>  2.1開發(fā)與運行環(huán)境</p><p>  2.1.1 開發(fā)環(huán)境</p><p>  Intel Pentium 4|2.0GH

43、z,512M內(nèi)存,80G硬盤Microsoft Windows7 Professional</p><p><b>  Eclipse </b></p><p><b>  2.1.2運行環(huán)境</b></p><p>  本游戲屬于一款休閑游戲,要求的運行環(huán)境為Intel Pentium 2及以上的處理器,32M以上的內(nèi)

44、存,20M以上的硬盤空間,Microsoft Windows 2000或XP及以上的系統(tǒng)。800*6—或以上的分辨率。</p><p><b>  2.2編程語言</b></p><p>  1990年12月,SUN MicroSystem公司成立了一個名為(Green Team)綠色項目的小組,Jame Gosling(Java之父),Bill Joe等人便是該小組

45、的成員,小組成立的初衷是為了開發(fā)一種能夠在電視,控制烤箱等家用消費類電子產(chǎn)品上進行交互式操作的分布式的系統(tǒng)框架,就這樣一個名為Oak的軟件誕生了。</p><p>  1992年9月3日(Green Team)綠色項目小組展示了Start7手持設備,它類似于今天的PDA,這個設備中的程序就是用Oak程序設計語言實現(xiàn)的,Oak的名字由來是因為James Gosing的辦公窗外有一棵橡樹,根據(jù)這橡樹命名。但是,在注冊

46、商標時卻發(fā)現(xiàn)這個名字已經(jīng)被別的公司占用了,后來更名為Java(據(jù)說是以當時開發(fā)小組島上的一種咖啡命名)</p><p>  1993年,全世界第一個Internet網(wǎng)頁瀏覽器Mosaic誕生了,,James Gosling認為Internet與Java特性不謀而合,便使用Java在Internet平臺上編寫出高交互性的網(wǎng)頁程序,這就是Java Applet??梢詫崿F(xiàn)一些類似時鐘,統(tǒng)計圖等網(wǎng)頁特效,是在那個年代,其

47、他程序設計語言所不能達到的。</p><p>  1995年,Oak被命名為Java編程語言,并于5月23日正式對外發(fā)布了JDK 1.0版本,Java語言也就因此正式誕生了。</p><p>  1997年,三周內(nèi)超過22萬的開發(fā)者下載了JDK1.1軟件,超過8,000名開發(fā)者參加了JavaOne大會,Java Card 2.0平臺發(fā)布。隨后98年JDK 1.1正式發(fā)布,其被下載次數(shù)超過2

48、00萬,VISA公司應用Java Card技術推出了世界上首張智能卡,Java社區(qū)(JCP)成立。</p><p>  1999年,Java 2平臺源代碼公開,JavaOne大會參會人數(shù)增長到 20,000人,J2EE veta軟件發(fā)布。</p><p>  2002年J2EE SDK下載次數(shù)達200萬,78%的決策者認為,J2EE技術是具有影響力的網(wǎng)絡構建開發(fā)平臺。</p>

49、<p>  2004年 Java 2 Platform,Stadard Edition 5發(fā)布,利用Java技術開發(fā)的火星探測器成功登陸火星, Sun Java Studio Creator發(fā)布</p><p>  2005年,JavaOne大會召開,SUN公司公開Java SE 6.此時,Java的各種版本已經(jīng)更名,以取消其中的數(shù)字”2”:J2EE更名為 Java EE,J2SE更名為Java SE

50、,J2ME更名為Java ME。</p><p>  到目前為止,J2SE已經(jīng)發(fā)展為一個覆蓋面廣、效率高、易用性強的技術平臺,但Java并沒有停止前進的腳步。Mustang版本的J2SE正在緊鑼密鼓的開發(fā)當中,按以前的慣例,每兩年會發(fā)布一個全新的J2SE版本,所以Mustang開發(fā)版對應的J2SE6.0發(fā)布版將在2006年完成。 J2SE6.0 Specification Lead是Sun公司老資格的開發(fā)者Mar

51、k Reinhold,我們在J2SE1.2中就能看到他的影子。</p><p>  Mark Reinhold曾經(jīng)是NIO(新 的I/O處理) API的Specification Lead,現(xiàn)在是Sun的J2SE架構師與總工程師。Mark Reinhold透露說,J2SE6.0將更易于管理,可以給外部的管理軟件提供更多信息。它可以讓調(diào)試軟件在程序運行的時候進行檢查,而不是在運行之前,這樣更容易找到問題所在。他說,

52、J2SE6.0將會更好地和圖形用戶界面集成,包括微軟即將發(fā)布的Windows版Longhorn2005年3月23日是Java技術十周年慶典日,在這十年的發(fā)展中,Java平臺吸引了四百萬開發(fā)者,在網(wǎng)絡計算遍及全球的今天,更是有17.5億臺設備使用了Java技術。作為Java技術的基礎,J2SE的功績不可掩沒,我們期望J2SE伴隨Java</p><p><b>  平臺一路走好。</b><

53、;/p><p>  3.網(wǎng)絡五子棋的需求分析與總體設計</p><p><b>  3.1需求分析</b></p><p>  軟件的需求分析是軟件生存期中重要的一步,也是決定性的一步。只有通過需求分析才能把軟件功能和性能的總體概念描述為具體的軟件需求規(guī)格說明,從而奠定軟件開發(fā)的基礎。</p><p>  在此階段,了解用戶

54、要求本軟件必須滿足的所有功能和限制,以及用戶對軟件功能和性能的要求,弄清用戶想要軟件“做什么”,準確地表達用戶的要求。</p><p><b>  3.1.1功能需求</b></p><p><b>  ●能通過網(wǎng)絡下棋</b></p><p>  ●符合五子棋的基本規(guī)則</p><p>  ●提供

55、水平坐標和垂直坐標的功能</p><p><b>  ●可提供聊天功能</b></p><p>  3.1.2用戶界面需求</p><p><b>  ●界面友好親切</b></p><p><b>  ●界面干凈整潔</b></p><p>  ●操作

56、界面直觀,不繁瑣</p><p><b>  3.2總體設計</b></p><p>  在需求分析結束后,已經(jīng)弄清楚了軟件的各種需求,較好地解決了用戶要軟件“做什么”的問題,接下來就將著手實現(xiàn)軟件的需求,即要著手解決“怎么做”的問題。</p><p>  在這個階段著重實現(xiàn)需求的程序模塊設計問題,并將需求轉化為軟件的系統(tǒng)結構,進行模塊的劃分,

57、確定每個模塊的功能、接口及模塊之間的調(diào)用關系。根據(jù)需求分析制訂出整個軟件的系統(tǒng)結構圖。</p><p>  如圖2.1所示:對于服務器端,制定服務器端的地址和端口,然后在Socket上監(jiān)聽客戶端的請求,此時如果有客戶端已建立Socket樹且發(fā)送了連接請求,此時客戶端和服務器就創(chuàng)建了連接,如果服務器端有其他的連接就阻塞此次連接,客戶端再次發(fā)出請求,如果此時阻塞已沒有,客戶端和服務器就建立連接,接受用戶請求信息,處理

58、請求信息,將結果反饋給客戶端,客戶端接受到了服務結果。</p><p><b>  4.構架</b></p><p>  選用了C/S模式進行實現(xiàn),網(wǎng)絡內(nèi)部使用TCP/IP方式利用SOCKET 通過傳輸層提供的服務,使用Java進行圖形用戶的搭建,系統(tǒng)分為兩個部分為服務器端程序和客戶端程序。</p><p><b>  4.1客戶端實

59、現(xiàn)</b></p><p><b>  客戶端設有五個按鈕</b></p><p><b>  (1)鏈接主機</b></p><p>  在開始游戲前必須鏈接服務器,IP為本地的端口號,鏈接主機后,會有第一個用戶進入到游戲中。如圖4.2</p><p><b> ?。?)建立

60、游戲</b></p><p>  在鏈接完主機后,按下建立游戲按鈕,第一個用戶就建立了游戲。如圖4.3</p><p><b>  (3)加入游戲</b></p><p>  當?shù)谝粋€游戲者創(chuàng)建完游戲后,在進來的用戶可以加入到與第一個創(chuàng)建游戲的用戶游戲中,再加入游戲前,必須選定一個有效用戶,然后兩個人才能進行網(wǎng)絡五子棋的對抗游戲,如

61、圖4.4</p><p><b> ?。?)放棄游戲</b></p><p>  如果用戶創(chuàng)建完游戲后不想進行游戲了,可以按下放棄游戲按鈕,自動退出游戲,如圖4.5</p><p><b>  (5)關閉程序</b></p><p>  在不想進行游戲時可以直接關閉程序,如圖4.6</p>

62、;<p><b> ?。?)聊天系統(tǒng)</b></p><p>  兩個游戲者可以進行聊天,方便用戶的交流,本軟件可以容納50個人在線下棋聊天。如圖4.7</p><p><b>  4.2客戶端的功能</b></p><p>  客戶端是接受服務器端所有用戶,用于用戶玩游戲的界面操作。</p>

63、<p><b>  分析如下:</b></p><p> ?、賑hessClient有一個ServerSocket來開啟網(wǎng)絡服務,接受Socket,有了該類就可以進行網(wǎng)絡對弈,對弈時,客戶端下棋之后,在服務器端應該馬上顯示客戶端下棋的位置,以保持游戲的同步,再有贏棋的時候雙方都有提示性話語,贏棋的一方提示自己贏棋,并提示是否繼續(xù)玩。</p><p>  pu

64、blic boolean connectServer(String serverIP,int serverPort) throws Exception//鏈接</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p>

65、<p>  chatSocket=new Socket(serverIP,serverPort);</p><p>  in=new DataInputStream(chatSocket.getInputStream());</p><p>  out=new DataOutputStream(chatSocket.getOutputStream());</p>

66、<p>  clientThread clientthread=new clientThread(this);</p><p>  clientthread.start();</p><p>  isOnChat=true;</p><p>  return true;</p><p><b>  }</b>

67、</p><p>  catch(IOException ex)</p><p><b>  {</b></p><p>  chatpad.chatLineArea.setText("chessClient:connectServer:無法連接,建議重新啟動程序 \n");</p><p><

68、b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  ②chessClient中有keyPressed用于校對關鍵字,如果在聊天時必須將下拉菜單中選中所有人,然后才可以進行聊天。代碼如下:</p><p>  public voi

69、d keyPressed(KeyEvent e)</p><p><b>  {</b></p><p>  TextField inputWords=(TextField)e.getSource();</p><p>  if(e.getKeyCode()==KeyEvent.VK_ENTER)</p><p><

70、;b>  {</b></p><p>  if(inputpad.userChoice.getSelectedItem().equals("所有人"))</p><p><b>  {</b></p><p><b>  try</b></p><p><

71、b>  {</b></p><p>  out.writeUTF(inputWords.getText());</p><p>  inputWords.setText("");</p><p><b>  }</b></p><p>  catch(Exception ea)<

72、;/p><p><b>  {</b></p><p>  chatpad.chatLineArea.setText("chessClient:KeyPressed無法連接,建議重新連接 \n");</p><p>  userpad.userList.removeAll();</p><p>  inp

73、utpad.userChoice.removeAll();</p><p>  inputWords.setText("");</p><p>  controlpad.connectButton.setEnabled(true);</p><p><b>  }</b></p><p><b&

74、gt;  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  out.

75、writeUTF("/"+inputpad.userChoice.getSelectedItem()+" "+inputWords.getText());</p><p>  inputWords.setText("");</p><p><b>  }</b></p><p>  c

76、atch(Exception ea)</p><p><b>  {</b></p><p>  chatpad.chatLineArea.setText("chessClient:KeyPressed無法連接,建議重新連接 \n");</p><p>  userpad.userList.removeAll();</

77、p><p>  inputpad.userChoice.removeAll();</p><p>  inputWords.setText("");</p><p>  controlpad.connectButton.setEnabled(true);</p><p><b>  }</b></p

78、><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.3服務器的實現(xiàn)</b></p><p>  服務器中有類MessageServer,pub

79、licTalk ,makeMessageServer</p><p> ?、費essageServer繼承了Panel類,設置了棋盤的大小,背景顏色,消息盤的大小,全面設置了界面中各種窗口的大小。</p><p>  代碼如下:class MessageServer extends Panel //implements ActionListener</p><p>

80、<b>  {</b></p><p>  TextArea messageBoard=new TextArea("",22,50,TextArea.SCROLLBARS_VERTICAL_ONLY);</p><p>  Label statusLabel=new Label("當前連接數(shù):",Label.LEFT);<

81、/p><p>  Panel boardPanel=new Panel();</p><p>  Panel statusPanel=new Panel();</p><p>  MessageServer()</p><p><b>  {</b></p><p>  setSize(350,300

82、);</p><p>  setBackground(Color.pink);</p><p>  setLayout(new BorderLayout());</p><p>  boardPanel.setLayout(new FlowLayout());</p><p>  boardPanel.setSize(210,210);<

83、;/p><p>  statusPanel.setLayout(new BorderLayout());</p><p>  statusPanel.setSize(210,50);</p><p>  boardPanel.add(messageBoard);</p><p>  statusPanel.add(statusLabel,Bord

84、erLayout.WEST);</p><p>  add(boardPanel,BorderLayout.CENTER);</p><p>  add(statusPanel,BorderLayout.NORTH);</p><p><b>  }</b></p><p><b>  }</b>&

85、lt;/p><p> ?、?publicTalk實現(xiàn)了聊天功能</p><p>  代碼如下:public boolean peerTalk(String peerTalk,String talkMessage)</p><p><b>  {</b></p><p>  for(Enumeration enu=client

86、DataHash.keys();enu.hasMoreElements();)</p><p><b>  {</b></p><p>  Socket userClient=(Socket)enu.nextElement();</p><p>  if(peerTalk.equals((String)clientNameHash.get(us

87、erClient)) && !peerTalk.equals((String)clientNameHash.get(clientSocket)))</p><p><b>  {</b></p><p>  synchronized(clientDataHash)</p><p><b>  {</b>&l

88、t;/p><p>  DataOutputStream peerOutData=(DataOutputStream)clientDataHash.get(userClient);</p><p><b>  try</b></p><p><b>  {</b></p><p>  peerOutDat

89、a.writeUTF(talkMessage);</p><p><b>  }</b></p><p>  catch(IOException es)</p><p><b>  {</b></p><p>  es.printStackTrace();</p><p>&

90、lt;b>  }</b></p><p><b>  }</b></p><p>  Feedback(talkMessage);</p><p>  return(false);</p><p><b>  }</b></p><p>  else if(

91、peerTalk.equals((String)clientNameHash.get(clientSocket)))</p><p><b>  {</b></p><p>  Feedback(talkMessage);</p><p>  return(false);</p><p><b>  }<

92、/b></p><p><b>  }</b></p><p>  return(true);</p><p><b>  }</b></p><p> ?、?makeMessageServer顯示服務器的狀態(tài)</p><p>  代碼如下:public void ma

93、keMessageServer(int port,MessageServer server) throws IOException</p><p><b>  {</b></p><p>  Socket clientSocket;</p><p>  long clientAccessNumber=1;</p><p>

94、;  this.server=server;</p><p><b>  try</b></p><p><b>  {</b></p><p>  serverSocket=new ServerSocket(port);</p><p>  server.messageBoard.setText(

95、"服務器開始于:"+serverSocket.getInetAddress().getLocalHost()+":"+serverSocket.getLocalPort()+"\n");</p><p>  while(true)</p><p><b>  {</b></p><p>

96、;  clientSocket=serverSocket.accept();</p><p>  server.messageBoard.append("用戶連接:"+clientSocket+"\n");</p><p>  DataOutputStream outData=new DataOutputStream(clientSocket.get

97、OutputStream());</p><p>  clientDataHash.put(clientSocket,outData);</p><p>  clientNameHash.put(clientSocket,("新來客"+clientAccessNumber++));</p><p>  ServerThread thread=ne

98、w ServerThread(clientSocket,clientDataHash,clientNameHash,chessPeerHash,server);</p><p>  thread.start();</p><p><b>  }</b></p><p><b>  }</b></p><

99、p>  catch(IOException ex)</p><p><b>  {</b></p><p>  System.out.println("已經(jīng)有服務器在運行. \n");</p><p><b>  }</b></p><p><b>  }<

100、/b></p><p><b>  4.4服務器的功能</b></p><p>  服務器是存儲所有連接者的相關信息以及各種狀態(tài),負責客戶間信息的傳遞。</p><p>  Socket編程接口,代碼如下:</p><p>  class ServerThread extends Thread</p>

101、<p><b>  {</b></p><p>  Socket clientSocket;</p><p>  Hashtable clientDataHash;</p><p>  Hashtable clientNameHash;</p><p>  Hashtable chessPeerHash;&l

102、t;/p><p>  MessageServer server;</p><p>  boolean isClientClosed=false;</p><p>  ServerThread(Socket clientSocket,Hashtable clientDataHash,Hashtable clientNameHash,Hashtable chessPeerH

103、ash,MessageServer server)</p><p><b>  {</b></p><p>  this.clientSocket=clientSocket;</p><p>  this.clientDataHash=clientDataHash;</p><p>  this.clientNameHa

104、sh=clientNameHash;</p><p>  this.chessPeerHash=chessPeerHash;</p><p>  this.server=server;</p><p><b>  }</b></p><p>  運行結果如圖4.8:</p><p>  4.5客戶

105、端與服務器的鏈接</p><p><b>  如圖4.9</b></p><p>  服務器端創(chuàng)建Socket監(jiān)聽端口,等待客戶端的連接,客戶端連接服務器,被Socket監(jiān)聽端口捕獲,與服務器建立了連接,客戶端的輸入輸出信息經(jīng)服務器傳給所要傳的用戶。客戶端與服務器就建立額連接。</p><p><b>  5.總結與體會</b&

106、gt;</p><p><b>  5.1經(jīng)驗總結</b></p><p>  網(wǎng)絡五子棋軟件的開發(fā)讓我經(jīng)歷了一次前所未有的體驗,讓我真正體會到了“書到用時方恨少”的含義,體會到了厚積薄發(fā)的意義所在,這次的開發(fā)是對自己所學的知識的一次大考驗,也是對自己潛能的一次挖掘?,F(xiàn)在把一些開發(fā)的經(jīng)驗總結如下:</p><p> ?、僖浞譁蕚?,在系統(tǒng)分析于

107、設計階段要做的盡可能詳細,全面,以免在后階段返工,浪費時間,人力等。</p><p> ?、谶\用高效的測試手段。測試要占開發(fā)很大的時間,軟件編碼以后,并非總能百分百的成功,那就要進行測試。在大程序中,多寫異常處理的代碼,以及變量合法的檢驗等,DEBUG中混合使用斷點測試以及報告函數(shù)(MessageBox),以提高DEBUG效率。</p><p> ?、垡朴诓檎視Y料。在軟件開發(fā)過程中

108、,資料是必不可少的,在開發(fā)時不要急于設計編碼,應該學會畫出程序流程圖,想好下一步要干什么,怎樣做到編碼的利用最大化,多看一些前輩的代碼,吸取他們的優(yōu)點,然后加以改進,使之更加完善。</p><p>  5.2開發(fā)的心得體會</p><p>  此次畢業(yè)設計我選擇的是網(wǎng)絡五子棋的開發(fā),在開發(fā)過程中我運用了大部分所學的知識,像網(wǎng)絡操作系統(tǒng),局域網(wǎng)等課程的知識,以及對服務器端的開發(fā),以及如何將服

109、務器端和客戶端鏈接等問題,在之前自己對于這些知識一無所知,但在編程中查閱了很多資料,從中學到了很多知識,讓我感覺到王章高樓平地起,我們平時需要的事扎實的基礎,我們不應該輕視書本的知識,不要認為書本的知識很膚淺,只有學好書本的知識才能更廣泛的應用到其他領域。</p><p>  網(wǎng)絡五子棋軟件的開發(fā)再一次讓我體會到了,微軟的操作系統(tǒng)其簡單快捷背后所隱藏的極其復雜的驅動機制,微軟確實為我們帶來了很好的使用環(huán)境和開發(fā)環(huán)

110、境,所有我們要做的事情都是站在巨人的肩膀上完成的。</p><p><b>  參考文獻</b></p><p> ?、僦x希仁,《計算機網(wǎng)絡》,電子工業(yè)出版社,2006;</p><p>  ②孫晨霞,楊興運,《Java程序設計》,中國計劃出版社,2007;</p><p> ?、酃⑾榱x,張躍平,Java2使用教程(第二

111、版),北京,清華大學出版社</p><p><b>  2004,2;</b></p><p> ?、苄炝?,孫計安,Java應用與開發(fā)案例教程,北京,清華大學出版社,20057;</p><p> ?、菖斫▏?,那約,連珠五子棋入門,北京;金盾出版社,1997,6;</p><p>  ⑥蔡建平,《軟件綜合開發(fā)案例教程》,

112、清華大學出版社,2011;</p><p> ?、連ruce Eckel,《java編程思想》,機械工業(yè)出版社,2007;</p><p> ?、嗔河?,《Java語言程序設計》,機械工業(yè)出版社,2011;</p><p> ?、釋O涌,《現(xiàn)代軟件工程》,北京希望電子出版社,2003;</p><p> ?、鈃FLANAGAN,《Java技術手冊

溫馨提示

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

評論

0/150

提交評論