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















 
 
 
 
 
 
 