基于TCP的網絡計算器_第1頁
基于TCP的網絡計算器_第2頁
基于TCP的網絡計算器_第3頁
基于TCP的網絡計算器_第4頁
基于TCP的網絡計算器_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于tcp/ip的網絡計算器肖宇鋒 s1010w138 景一鳴 s09102071 宛金林 s1010w121設計內容:本程序是用java實現的基于tcp/ip的c/s模式的網絡計算器,首先在客戶 端輸入一個字符串形式的算術表達式,通過tcp/ip套接字,在主機和internet 之間建立可靠的、雙向的、持續(xù)的、點對點的流式連接,把該字符串傳給服務器 端,服務器端對字符串進行分解轉換,計算出結果,又把結杲以字符串的形式傳 回客戶端進行顯示,完成運算。程序:客戶端建立套接字傳輸輸入的字符形式的算術表達式if(str != null && !str巳qualsw)chatconte

2、nt append ("表達式:m+ str +"nh);tryoutwriteutf(sentencegettext();catch(exception e)chatcontent. append ("月艮務器沒有啟動.n”);elsechatcontent. append ("表達示不能為空nn);服務器端建立套接字接收由客戶端傳過來的文本,并將結果傳回客戶端trytheclient = server.accept();out = new dataoutputstream(theclientgetoutputstream(); in = new da

3、tainputstream(theclient getinputstream(); done = true;string line = null;while(done)while(line = in.readutf()!= null)chatcontent. append (”運算表達示為:"+ line+" n"); result = calculate.sizeyunsuan(line); thread.sleep(1000);chatcontent. append (" + result +nnh );try/得到結果后,建立套接字,將結果傳回客戶

4、端out .wzriteutf (result);catch(exception el) chatcontent append ("客丿'協(xié)sj彳從存在 n”);inclose();outclose(); theclient.close();catch(exception e)chatcontent.append(n + theclient.getinetaddress() +")已經離開.n”);對文本進行分解轉換計算,得到最終的結果并轉換成字符串用于傳給客戶端public class calculate / * *兩個字符類型的小數進行相加為a+b;* para

5、m a* param b* return*/public static string addbigdecimal(string a, string b) double al = double p<arsedouhde (a);double bl = doubleb);bigdecimal a2 = bigdecimal.valueof(al);bigdecimal b2 = bigdecimal.valueof(bl); bigdecimal c2 = a2.add(b2);string cl = c2 + u u;return cl;/ *兩個字符類型的小數進行相減為ab;* para

6、m a* param b* return*/public static string reducebigdecimal(string a, string b) double al = double p<arsedoujb2e (a);double bl = double.porsedouble(b);bigdecimal a2 = bigdecimal.valueof(al);bigdecimal b2 = bigdecimal va丄ueof (bl);bigdecimal c2 = a2.subt:ract(b2);string cl = c2 + n 11 ;return cl;*

7、 param a* param b* return*/public static string multipliedstring(string a, string b) double al = double.parsedouble(a);double bl = double.parsedouble(b);bigdecimal a2 = bigdecimalvalueof(al);bigdecimal b2 = bigdecimal.valueof(bl);bigdecimal c2 = a2multiply(b2);string cl = c2 + h h;return cl;/ * *兩個字

8、符類型的數相除a/b=c;* param a* param b* return*/publie static string dividestring(string a, string b) double al = double.parsedouble(a); double bl = double.parsedouble(b);bigdecimal a2 = bigdecimal. valueof (a.1);bigdecimal b2 = bigdecimal.valueof(bl);bigdecimal c2 = a2 divide(b2,a2 scale();string cl = c2

9、+ n u;return cl;public static string yunsuanj ibie(string s) string r = n h;int p = 0;for (int i = 0; i v s.length(); i+) * iif (s. charat (i) = 1 + 1 | | s . charat (i) = ' - ' | | s . charat (i) | | s.charat(i) = 1 / 1 )p+;string k = new string 2 * p + 1;int kl = 0;int first = 0;for (int i

10、 = 0; i < slength(); i+)if (s . charat (i) = 1 + 1 | | s . charat (i)=| | s . charat (i)| | s.charat(i) = 1 / 1 ) kkl = s.substring(first, i);/數kl + + ;k kl = "" + s . charat (i) ;/符號kl + + ;first = i + 1;k kl = s substring(first, s.length();int kp = p;while (kp > 0)for (int i = 0; i

11、 < k.length; i+)if (k i .equals("*")| | ki .equals("/")int 1 ;for (1 = i - 1; 1 > -1; 1-)if (! (k 1 .equals("p")break;int q;for (q = i + 1; q < k.length; q+)if (! (k 1 .equals("p")break;if (k i .equals("*")k i = '* "+ multipliedstri

12、ng(kl ,kq);k1= "p";kq = "p" kp; else k i = "'' +dividestring (kl ,kq);k 1 = "p"kq = "p" kp- -;break;for (int i = 0; i < 2 * p + 1; i+)if (ki.equals("+")| ki.equals("-")int 1;for (1 = i - 1; 1 > -1; 1-)if (! (k 1 .equals(&

13、quot;p")break;int q;for (q = i + 1; q < k.length; q+)if (!(kq.equals("p") break;if (k i .equals(" +")k i = 11 h +addbigdecimal (k 1 , k q);k 1= ''p1'kq = "p"kp_; else ki = "h +reducebigdecimal(k1 ,k q);k 1= ''p1';kq = "p"kp

14、_;break;for (int i = 0; i < k.length; i+)if (! (k i .equals("p")r = k i;break;return r;publie static string sizeyunsuan(string s) /string backresult;while (true) int first = 0;int last = 0;for (int i = 0; i < s.length(); i+)if (s.charat(i) = '(1)first = i;if (s.charat(i) = ')

15、')last = i;break;if (last = 0)/system out.println(yunsuanj ibie(s);return yunsuanjibie(s); else string si = s.substring(0, first);string s2 = s.substring(first + 1, last);string s3 = ssubstring(last + 1, s.length();s = si + yunsuanj ibie(s2) + s3;客戶端接收來自服務器端傳回的結果,并表示出來tryclient = new socket (11

16、localhosth, 3014 );in = new datalnputstream (client getlnputsstreqm (); out = new dataoutputstream(client.getoutputstream(); done = false;string line = null; while(!done)while(line = in.readutf()!= null)chatconten匸.append("結杲:m + line + hnm); if(line.equals(hbyen)string msg = ”服務器發(fā)來結束通信命令n" msg += “系統(tǒng)將在您確認此對話框8秒后關閉

溫馨提示

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

評論

0/150

提交評論