文章詳情頁(yè)
利用Socket進(jìn)行Java網(wǎng)絡(luò)編程(二)
瀏覽:122日期: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ù)器的輸出和客戶端的寫(xiě)入。三、建立用戶界面讀者可以根據(jù)自己的喜好建立自己的用戶界面,這不是本文的重點(diǎn)。經(jīng)過(guò)以上三個(gè)步驟,就可以建立一個(gè)比較簡(jiǎn)單的對(duì)話程序。但是,為了使這個(gè)程序更加完善,應(yīng)進(jìn)行以下幾個(gè)改進(jìn):一、現(xiàn)在服務(wù)器只能服務(wù)一個(gè)客戶,也就是單線程的。可以將它改進(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è)線程來(lái)服務(wù)這個(gè)客戶,這個(gè)線程的名稱(chēng)是ServerThread,這個(gè)類(lèi)擴(kuò)展了Thread類(lèi),它的編寫(xiě)方法與前述的服務(wù)器的寫(xiě)法相同。二、為了可以隨時(shí)得到對(duì)方傳送過(guò)來(lái)的消息,可以在服務(wù)器以及客戶端各建立一個(gè)獨(dú)立的線程來(lái)察看輸入流,如果輸入流中有輸入,則可以即時(shí)顯示出來(lái)。代碼如下: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ù)流中的消息顯示出來(lái)} 通過(guò)以上改進(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. JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能2. PHP巧獲服務(wù)器端信息3. Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)4. 手動(dòng)架設(shè)PHP本地測(cè)試服務(wù)器5. 解決VUE項(xiàng)目localhost端口服務(wù)器拒絕連接,只能用127.0.0.1的問(wèn)題6. vue接通后端api以及部署到服務(wù)器操作7. ASP腳本組件實(shí)現(xiàn)服務(wù)器重啟8. Python中socket網(wǎng)絡(luò)通信是干嘛的9. 基于SpringBoot集成測(cè)試遠(yuǎn)程連接Redis服務(wù)的教程詳解10. 使用Docker的NFS-Ganesha鏡像搭建nfs服務(wù)器的詳細(xì)過(guò)程
排行榜
