您的位置:首頁技術文章
文章詳情頁

利用Socket進行Java網絡編程(二)

瀏覽:81日期:2024-06-21 10:40:54
內容: 出自:天極網 郗旻 2002年11月11日 09:28 二、建立客戶端代碼相比服務器端,客戶端要簡單一些,客戶端只需用服務器所在機器的ip以及服務器的端口作為參數創建一個Socket對象。得到這個對象后,就可以用'建立服務器'部分介紹的方法實現數據的輸入和輸出。Socket socket = new Socket('168.160.12.42',9998);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));out = new PrintWriter(socket.getOutputStream(),true); 以上的程序代碼建立了一個Socket對象,這個對象連接到ip地址為168.160.12.42的主機上、端口為9998的服務器對象。并且建立了輸入流和輸出流,分別對應服務器的輸出和客戶端的寫入。三、建立用戶界面讀者可以根據自己的喜好建立自己的用戶界面,這不是本文的重點。經過以上三個步驟,就可以建立一個比較簡單的對話程序。但是,為了使這個程序更加完善,應進行以下幾個改進:一、現在服務器只能服務一個客戶,也就是單線程的。可以將它改進為多線程服務器。try{ file://建立服務器 ServerSocket server = new ServerSocket(9998); int i=1; for(;;) {Socket incoming = server.accept();new ServerThread(incoming,i).start();i++; }}catch (IOException ex){ ex.printStackTrace(); } 循環檢測是否有客戶連接到服務器上,如果有,則創建一個線程來服務這個客戶,這個線程的名稱是ServerThread,這個類擴展了Thread類,它的編寫方法與前述的服務器的寫法相同。二、為了可以隨時得到對方傳送過來的消息,可以在服務器以及客戶端各建立一個獨立的線程來察看輸入流,如果輸入流中有輸入,則可以即時顯示出來。代碼如下:new Thread(){ public void run() {try{  while(true) {checkInput();sleep(1000);//每1000毫秒檢測一次 }}catch (InterruptedException ex) { }catch(IOException ex) {} }}.start();其中的checkInput()方法為private void checkInput() throws IOException{ String line; if((line=in.readLine())!=null) file://檢測輸入流中是否有新的數據t.setPartner(line); file://將數據流中的消息顯示出來} 通過以上改進,程序就可以比較好的運行了。 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
標簽: Java
相關文章:
国产综合久久一区二区三区