利用java.net包提供的網(wǎng)絡(luò)能力。以有連接流通訊方式為例,在服務(wù)器端的操作為一般為:
⑴ 創(chuàng)建一個(gè)ServerSocket對(duì)象,在指定端口監(jiān)聽客戶端發(fā)來的請(qǐng)求。
⑵ 在接收到請(qǐng)求時(shí)accept()方法將返回一個(gè)Socket對(duì)象。
⑶ 用上述Socket對(duì)象創(chuàng)建輸入、輸出流對(duì)象。
⑷ 通過輸入、輸出流與客戶交互。
⑸ 交互完畢,關(guān)閉輸入、輸出流與Socket。
⑹ 服務(wù)程序運(yùn)行結(jié)束,關(guān)閉ServerSocket。
實(shí)現(xiàn)代碼代碼類如:
try{
boolean flag=true;
Socket clientSocket=null;
ServerSocket serverSocket = new ServerSocket(0);
System.out.println("Server listen on: " +serverSocket.getLocalPort());
while(flag){
clientSocket=serverSocket.accept();
DataInputStream is=new DataInputStream( new bufferedInputStream(clientSocket.getInputStream()));
PrintStream os=new PrintStream( new bufferedOutputStream(clientSocket.getOutputStream()));
// 處理Applet請(qǐng)求
os.close();
is.close();
clientSocket.close();
}
serverSocket.close();
}catch( IOException e){
System.err.println(" Exception: "+e);
}
在客戶端的操作為:
⑴ 創(chuàng)建Socket對(duì)象建立與服務(wù)器的連接。
⑵ 用該Socket對(duì)象創(chuàng)建輸入、輸出流。
⑶ 與服務(wù)器交互。
⑷ 交互完畢,關(guān)閉輸入、輸出流與Socket。
實(shí)現(xiàn)代碼類如:
try {
Socket clientSocket =new Socket("serverName",7);
OutputStream os=clientSocket.getOutputStream();
DataInputStream is=new DataInputStream( clientSocket.getInputStream());
// 其它操作.
os.close();
is.close();
clientSocket.close();
}catch(Exception e){
System.err.println("Exception:"+e);
}
這種方法只依賴于標(biāo)準(zhǔn)的Java網(wǎng)絡(luò)支持,不需要用到附加的軟件包或工具, 因此顯得相當(dāng)簡(jiǎn)潔和靈活,易于實(shí)現(xiàn)某些特殊的需要。但在另一方面,服務(wù)器端對(duì)進(jìn)入請(qǐng)求以及客戶端對(duì)返回結(jié)果的分析工作量較大。
⑴ 創(chuàng)建一個(gè)ServerSocket對(duì)象,在指定端口監(jiān)聽客戶端發(fā)來的請(qǐng)求。
⑵ 在接收到請(qǐng)求時(shí)accept()方法將返回一個(gè)Socket對(duì)象。
⑶ 用上述Socket對(duì)象創(chuàng)建輸入、輸出流對(duì)象。
⑷ 通過輸入、輸出流與客戶交互。
⑸ 交互完畢,關(guān)閉輸入、輸出流與Socket。
⑹ 服務(wù)程序運(yùn)行結(jié)束,關(guān)閉ServerSocket。
實(shí)現(xiàn)代碼代碼類如:
try{
boolean flag=true;
Socket clientSocket=null;
ServerSocket serverSocket = new ServerSocket(0);
System.out.println("Server listen on: " +serverSocket.getLocalPort());
while(flag){
clientSocket=serverSocket.accept();
DataInputStream is=new DataInputStream( new bufferedInputStream(clientSocket.getInputStream()));
PrintStream os=new PrintStream( new bufferedOutputStream(clientSocket.getOutputStream()));
// 處理Applet請(qǐng)求
os.close();
is.close();
clientSocket.close();
}
serverSocket.close();
}catch( IOException e){
System.err.println(" Exception: "+e);
}
在客戶端的操作為:
⑴ 創(chuàng)建Socket對(duì)象建立與服務(wù)器的連接。
⑵ 用該Socket對(duì)象創(chuàng)建輸入、輸出流。
⑶ 與服務(wù)器交互。
⑷ 交互完畢,關(guān)閉輸入、輸出流與Socket。
實(shí)現(xiàn)代碼類如:
try {
Socket clientSocket =new Socket("serverName",7);
OutputStream os=clientSocket.getOutputStream();
DataInputStream is=new DataInputStream( clientSocket.getInputStream());
// 其它操作.
os.close();
is.close();
clientSocket.close();
}catch(Exception e){
System.err.println("Exception:"+e);
}
這種方法只依賴于標(biāo)準(zhǔn)的Java網(wǎng)絡(luò)支持,不需要用到附加的軟件包或工具, 因此顯得相當(dāng)簡(jiǎn)潔和靈活,易于實(shí)現(xiàn)某些特殊的需要。但在另一方面,服務(wù)器端對(duì)進(jìn)入請(qǐng)求以及客戶端對(duì)返回結(jié)果的分析工作量較大。