文章詳情頁
利用Socket進(jìn)行Java網(wǎng)絡(luò)編程(二)
瀏覽:114日期:2024-06-21 10:40:54
內(nèi)容: 出自:天極網(wǎng) 郗旻 2002年11月11日 09:28 二、建立客戶端代碼相比服務(wù)器端,客戶端要簡(jiǎn)單一些,客戶端只需用服務(wù)器所在機(jī)器的ip以及服務(wù)器的端口作為參數(shù)創(chuàng)建一個(gè)Socket對(duì)象。得到這個(gè)對(duì)象后,就可以用'建立服務(wù)器'部分介紹的方法實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。Socket socket = new Socket('168.160.12.42',9998);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(),true); 以上的程序代碼建立了一個(gè)Socket對(duì)象,這個(gè)對(duì)象連接到ip地址為168.160.12.42的主機(jī)上、端口為9998的服務(wù)器對(duì)象。并且建立了輸入流和輸出流,分別對(duì)應(yīng)服務(wù)器的輸出和客戶端的寫入。三、建立用戶界面讀者可以根據(jù)自己的喜好建立自己的用戶界面,這不是本文的重點(diǎn)。經(jīng)過以上三個(gè)步驟,就可以建立一個(gè)比較簡(jiǎn)單的對(duì)話程序。但是,為了使這個(gè)程序更加完善,應(yīng)進(jìn)行以下幾個(gè)改進(jìn):一、現(xiàn)在服務(wù)器只能服務(wù)一個(gè)客戶,也就是單線程的??梢詫⑺倪M(jìn)為多線程服務(wù)器。try{ file://建立服務(wù)器 ServerSocket server = new ServerSocket(9998); int i=1; for(;;) {Socket incoming = server.accept();new ServerThread(incoming,i).start();i++; }}catch (IOException ex){ ex.printStackTrace(); } 循環(huán)檢測(cè)是否有客戶連接到服務(wù)器上,如果有,則創(chuàng)建一個(gè)線程來服務(wù)這個(gè)客戶,這個(gè)線程的名稱是ServerThread,這個(gè)類擴(kuò)展了Thread類,它的編寫方法與前述的服務(wù)器的寫法相同。二、為了可以隨時(shí)得到對(duì)方傳送過來的消息,可以在服務(wù)器以及客戶端各建立一個(gè)獨(dú)立的線程來察看輸入流,如果輸入流中有輸入,則可以即時(shí)顯示出來。代碼如下:new Thread(){ public void run() {try{ while(true) {checkInput();sleep(1000);//每1000毫秒檢測(cè)一次 }}catch (InterruptedException ex) { }catch(IOException ex) {} }}.start();其中的checkInput()方法為private void checkInput() throws IOException{ String line; if((line=in.readLine())!=null) file://檢測(cè)輸入流中是否有新的數(shù)據(jù)t.setPartner(line); file://將數(shù)據(jù)流中的消息顯示出來} 通過以上改進(jìn),程序就可以比較好的運(yùn)行了。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽:
Java
相關(guān)文章:
1. Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)2. 詳解Android項(xiàng)目多服務(wù)端接口適配(超簡(jiǎn)單)3. Java實(shí)現(xiàn)基于http協(xié)議的網(wǎng)絡(luò)文件下載4. 阿里云服務(wù)器下安裝配置phpMyAdmin——基于CentOS 6.35. WINDOWS服務(wù)器安裝多套PHP的另類解決方案6. selenium-python如何捕獲網(wǎng)絡(luò)流量的響應(yīng)7. ASP.NET延遲調(diào)用或多次調(diào)用第三方Web API服務(wù)8. 記一次springboot服務(wù)凌晨無故宕機(jī)問題的解決9. Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法10. 多php服務(wù)器實(shí)現(xiàn)多session并發(fā)運(yùn)行
排行榜
