Java遠程配置的服務器調(diào)試與管理
Java遠程配置需要注意很多的問題,尤其是在代碼編寫上面更是十分的重要。下面我們就來詳細的看看在關鍵代碼的編寫上有什么是需要我們最需要重視的。希望大家有所收獲。
1,Socket ,ServerSocket:
Socket 位于java.net.包中,這是一個對于網(wǎng)絡通信來說及其重要的類,無論是那種語言,都會有Socket類的定應用或許,存在的差異也僅僅是在表示和組織上有所不同,Socket中文稱它為套接字,javaAPI中可以查看相應的介紹 一個ServerSocket構造一對通信套接字方法如下
- ServerSocket sr=new ServerSocket(port);
- Socket sc=new Socket("ip",port);
其中ServerSocket 的accpet方法十分重要,當一個服務套接字建立之后它一直阻塞等待一個套接字的請求,直到建立連接。
部分計算機網(wǎng)絡的書籍對套接字有這樣的定義 套接字 =ip+port;一個套接字是由一個由一個ip地址和一個端口組成的,在網(wǎng)絡通信中的底層實現(xiàn)也的確如此,要一個進程通信就必須為之制定工作端口,在連接端口之后才能在該端口上通信.
2, InputStream , OutputStream
當一個套接字連接成功后就可以獲得基于這個套接字的輸入輸出流,一切數(shù)據(jù)的發(fā)送和接受都離不開輸出輸入流,我們可以通過流封裝的方法選擇你要輸入或者輸出的數(shù)據(jù)類型,
請看如下例子:
這是一個完整服務器端的例子請仔細閱讀注釋
- //Server.java
- import java.net.*;
- import java.io.*;
- public class Server {
- public static void main(String args[])
- {
- ServerSocket server=null;//定義服務套接字
- Socket you=null;
- String s=null;
- DataOutputStream out=null;//定義流
- DataInputStream in=null;
- try{
- server=new ServerSocket(4331);/*在這里建立服務器套接字,
服務套接字的構造方法只需要有服務端口就行,這個道理很簡單*/- }catch(Exception e){System.out.println(e.getMessage());}
//捕捉異常- try{
- System.out.println("wait.....");
- you=server.accept();//在這里阻塞等待客戶的介入
- out=new DataOutputStream(you.getOutputStream());//取得輸出流
- in=new DataInputStream(you.getInputStream());//取得輸出流
- while(true)//循環(huán)讀
- {
- s=in.readUTF();
- int m=Integer.parseInt(s);
- out.writeUTF("Hello i am server!");//發(fā)送信息
- out.writeUTF("X 2:"+s);
- System.out.println("Server receive :"+s);
- Thread.sleep(300);//f防止組賽,沒有這一個語句或占用很多cpu和內(nèi)存
- }
- }catch(Exception e){System.out.println("Client leave!");}
- }
- }
上面是一個簡單的服務器端程序 顯示了如何實現(xiàn)套接字的服務器構建,下面是一個Java遠程配置的客戶端
- import java.io.*;
- import java.net.*;
- public class Client {
- public static void main(String args[])
- {
- String s=null;
- Socket mysocket;//創(chuàng)建客戶端套接字
- DataInputStream in=null;
- DataOutputStream out=null;
- try{
- mysocket=new Socket("127.0.0.1",4331);/
*注意實例化的構造方法與服務器有什么不同*/- System.out.println("localport:"+mysocket.getLocalPort());
- System.out.println("localAddress:"+mysocket.
getLocalAddress());- System.out.println("localSocketAddress:"+mysocket.
getLocalSocketAddress());- System.out.println("Chanel:"+mysocket.getChannel());
- // 上面的代碼顯示具體的通信地址端口
- in=new DataInputStream(mysocket.getInputStream());
- out=new DataOutputStream(mysocket.getOutputStream());
- for(int k=1;k<100;kk=k+2)//循環(huán)寫入內(nèi)容
- {
- out.writeUTF(""+k);
- s=in.readUTF();
- System.out.println("客戶端接受的數(shù)據(jù)?。?quot;+s);
- Thread.sleep(500);
- }
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- }
- }
上面兩個文件保存后放在一個文件價下運行Java遠程配置就可以實現(xiàn)通信,建議讀者使用集成開發(fā)環(huán)境進行測試。
【編輯推薦】