You are on page 1of 9

RMI

RMIServerSideDemo
interface t tn l IPerfectNumber
package khamphacntt.com.vn;
import java.rmi.*;
public interface IPerfectNumber extends Remote{
tring checkPerfectNumber!int number" thro#s Remote$xception;
lp PerfectNumber
package khamphacntt.com.vn;
import java.rmi.*;
import java.rmi.server.*;
public class PerfectNumber extends %nicastRemote&bject implements
IPerfectNumber{
public PerfectNumber!" thro#s Remote$xception{
'
(&verride
public tring checkPerfectNumber!int number" thro#s Remote$xception {
double sum ) *;
for !int i ) +; i , number-+; i.." {
if !number / i ))*" {
sum .) i;
'
'
if !number )) sum" {
return number . 0 l1 s2 ho1n h3o.0;
' else {
return number . 0 kh4ng l1 s2 ho1n h3o.0;
'
'
'
lp Server
package khamphacntt.com.vn;
import java.rmi.Remote$xception;
import java.rmi.registr5.*;
public class erver {
int port;
public erver!int port" {
this.port ) port;
'
public void run!"{
tr5 {
Registr5 registr5 ) 6ocateRegistr5.createRegistr5!port";
registr5.rebind!0checkPerfectNumberervice07 ne# PerfectNumber!"";
' catch !Remote$xception e" {
5stem.out.println!0erver not connected8 0 . e";
'
'
public static void main!tring9: args" {
erver s ) ne# erver!+*;;";
s.run!";
'
'
RMIClientSideDemo
copy file IPerfectNumber pha Server sang d n RMIClientSideDemo
lp Client
package khamphacntt.com.vn;
import java.io.<ufferedReader;
import java.io.=ileReader;
import java.io.I&$xception;
import java.rmi.Naming;
import java.util.canner;
public class >lient {
private canner reader ) null;
IPerfectNumber perfectNumber ) null;
public >lient!tring serviceName" {
tr5 {
??perfectNumber ) !IPerfectNumber"
Naming.lookup!0??localhost?checkPerfectNumberervice0";
perfectNumber ) !IPerfectNumber" Naming.lookup!serviceName";
' catch !$xception e" {
5stem.out.println!06oi0";
'
'
public void run!"thro#s I&$xception{
main@enu!";
'
private void main@enu!" thro#s I&$xception{
int choosedAalue;
do {
reader ) ne# canner!5stem.in";
5stem.out.println!09+: - B$C DECE =R&@ F$G<&ERD0";
5stem.out.println!09H: - B$C DECE =R&@ data.txt =I6$0";
5stem.out.println!09I: - =INIJ0";
5stem.out.print!0Please selects one option8 0";
choosedAalue ) reader.nextInt!";
reader.next6ine!";
tring userData ) 00;
if !choosedAalue )) H" {
reader ) ne# canner!ne# <ufferedReader!ne#
=ileReader!0data.txt0""";
'
#hile !choosedAalue K)I" {
if !choosedAalue )) +" {
5stem.out.print!0Please input data8 0";
userData ) reader.next6ine!";
if !KuserData.eLualsIgnore>ase!0ket thuc0""
{
5stem.out.println!0Result8 0 .
perfectNumber.checkPerfectNumber!Integer.parseInt!userData""";
'else{
!choosedAalue K)I"
'
'
if !choosedAalue ))H" {
#hile !reader.hasNext!"" {
userData ) reader.next6ine!";
if !KuserData.eLualsIgnore>ase!0ket thuc0"" {
5stem.out.println!0Result8 0 .
perfectNumber.checkPerfectNumber!Integer.parseInt!userData""";
'
'
if !userData.eLualsIgnore>ase!0ket thuc0""
{
break; ?? $scape from the #hile loop8 #hile
!choosedAalue K)I"
'
'
'

' #hile !choosedAalue K)I";
'
public static void main!tring9: args" thro#s I&$xception {
>lient client ) ne# >lient!0??localhost?checkPerfectNumberervice0";
client.run!";
'
'
file data.txt c ni dung nh sau!
M
N
+*
HO
ket thuc
UDP
t"o lp ServerUDP
package khamphacntt.com.vn;
import java.net.DatagramPacket;
import java.net.Datagramocket;
import java.net.InetEddress;
public class erver%DP {
private Datagramocket serverocket ) null;
private final int port;
private DatagramPacket receivePacket7sendPacket;
public erver%DP!int port" {
this.port ) port;
'
private void run!" thro#s $xception{
??>reating a server socket7 parameter is a local port number
serverocket ) ne# Datagramocket!port";
5stem.out.println!0Paiting for client on port 0 .
serverocket.get6ocalPort!" . 0 ...0";
??>reate buffer to receive incoming data
b5te9: receiveData ) ne# b5te9MQQIM:;
??>reate packet to get data
receivePacket ) ne# DatagramPacket!receiveData7 receiveData.length";
??>reate buffer to contain the data #ill be send to client
b5te9: sendData ) ne# b5te9MQQIM:;
??>ommunication
#hile !true" {
??Receive incoming data
serverocket.receive!receivePacket";
??get data from buffer
tring incomingData ) ne#
tring!receivePacket.getData!"7*7receivePacket.get6ength!"";
if !KincomingData.trim!".eLualsIgnore>ase!0ket thuc0"" {
?? Processing incoming data and assign returned value for
sendData variable
sendData ) processIncomingData!incomingData";
??get clientRs ip
InetEddress clientIP ) receivePacket.getEddress!";
??Bet clientRs port
int clientPort ) receivePacket.getPort!";
??packeting the result to send back to the client
sendPacket ) ne# DatagramPacket!sendData7
sendData.length7clientIP7clientPort";
??sending result to client
serverocket.send!sendPacket";
'
'
'
private b5te9: processIncomingData!tring inputData"{
tring result ) checkPerfectNumber!Integer.parseInt!inputData"";
return result.get<5tes!";
'
private tring checkPerfectNumber!int number"{
double sum ) *;
for !int i ) +; i , number-+; i.." {
if !number / i ))*" {
sum .) i;
'
'
if !number )) sum" {
return number . 0 is a perfect number.0;
' else {
return number . 0 is not a perfect number.0;
'
'
public static void main!tring9: args" thro#s $xception {
int port ) ;*;*;
erver%DP server ) ne# erver%DP!port";
server.run!";
'
'
lp ClientUDP
package khamphacntt.com.vn;
import java.io.<ufferedReader;
import java.io.=ileReader;
import java.io.I&$xception;
import java.net.DatagramPacket;
import java.net.Datagramocket;
import java.net.InetEddress;
import java.util.canner;
public class >lient%DP {
private final int port; ?? serverRs port
private canner reader;
private Datagramocket clientocket ) null;
private InetEddress server ) null; ?? serverRs ip
private DatagramPacket receivePacket7sendPacket;
public >lient%DP!tring server7int port" thro#s I&$xception {
this.server ) InetEddress.get<5Name!server";
this.port ) port;
'
private void run!" thro#s I&$xception{
main@enu!";
'
private void main@enu!" thro#s I&$xception {
int choosedAalue;
??>reate buffer to receive incoming data
b5te9: receiveData ) ne# b5te9MQQIM:;
??>reate packet to get data
receivePacket ) ne# DatagramPacket!receiveData7 receiveData.length";
??>reate buffer to contain the data #ill be send to client
b5te9: sendData ) ne# b5te9MQQIM:;
do {
clientocket ) ne# Datagramocket!";
??the reader for reading userRs data that is inputed from ke5board
reader ) ne# canner!5stem.in";
5stem.out.println!09+: - B$C DECE =R&@ F$G<&ERD0";
5stem.out.println!09H: - B$C DECE =R&@ data.txt =I6$0";
5stem.out.println!09I: - =INIJ0";
5stem.out.print!0Please selects one option8 0";
??save userRs choosed option
choosedAalue ) reader.nextInt!";
?? >lear buffer
reader.next6ine!";
tring userData ) 00;
??Processing data from the file
if !choosedAalue )) H" {
reader ) ne# canner!ne# <ufferedReader!ne#
=ileReader!0data.txt0""";
'
#hile !choosedAalue K)I" {
if !choosedAalue )) +" {
5stem.out.print!0Please input data8 0";
??read data from ke5board
userData ) reader.next6ine!";
sendData ) userData.get<5tes!";
sendPacket ) ne# DatagramPacket!sendData7
sendData.length7server7port";
??ending data to server
clientocket.send!sendPacket";
if !KuserData.eLualsIgnore>ase!0ket thuc0""
{
??receive data
clientocket.receive!receivePacket";
??Read processed data in the packet that is sent from
the server
tring returnedAalue ) ne#
tring!receivePacket.getData!"";
??Displa5 the result
5stem.out.println!0Result8 0 . returnedAalue.trim!"";
'else{
break; ?? $scape from the #hile loop8 #hile
!choosedAalue K)I"
'
'
if !choosedAalue ))H" {
#hile !reader.hasNext!"" {
??read a line in data.txt file
userData ) reader.next6ine!";
sendData ) userData.get<5tes!";
sendPacket ) ne# DatagramPacket!sendData7
sendData.length7server7port";
??ending data to server
clientocket.send!sendPacket";
if !KuserData.eLualsIgnore>ase!0ket thuc0"" {
??receive data
clientocket.receive!receivePacket";

??Read processed data in the packet that is sent
from the server
tring returnedAalue ) ne#
tring!receivePacket.getData!"";
??Displa5 the result
5stem.out.println!0Result8 0 .
returnedAalue.trim!"";
'
'
if !userData.eLualsIgnore>ase!0ket thuc0"" {
break; ?? $scape from the #hile loop8 #hile
!choosedAalue K)I"
'
'
'

' #hile !choosedAalue K)I";
'
public static void main!tring9: args" thro#s I&$xception {
>lient%DP client ) ne# >lient%DP!0localhost07 ;*;*";
client.run!";
'
'
file data.txt c ni dung nh sau!
M
N
+*
HO
ket thuc
TCP
lp Server
package khamphacntt.com.vn;
import java.io.I&$xception;
import java.io.PrintPriter;
import java.net.erverocket;
import java.net.ocket;
import java.util.canner;
public class erver {
private erverocket listener;
private ocket clientocket; ?? <Sm Elt . $nter
private canner inputReader;
private PrintPriter outputPriter;
public erver!int port" thro#s I&$xception {
listener ) ne# erverocket!port";
'
private void runervices!" thro#s I&$xception{
#hile !true" {
5stem.out.println!0Paiting for client on port 0 .
listener.get6ocalPort!" . 0 ...0";
clientocket ) listener.accept!";
5stem.out.println!0.....0";
inputReader ) ne# canner!clientocket.getInputtream!"";
??Cham s2 thT hai trong PrintPriter l1 true UV tW UXng flush!" nXi
dung
outputPriter ) ne#
PrintPriter!clientocket.get&utputtream!"7true";
??inputData8 lYu dZ li[u do client g\i l]n
??outputData8 lYu dZ li[u chu^n b_ g\i v` cho client
tring inputData7outputData;
??6ap lbi vi[c Ucc tdng deng dZ li[u7 nfu dZ li[u Ucc UYgc khhc
?? chuii 0ket thuc0 thj thWc hi[n vi[c xk ll dZ li[u
#hile !K
!inputData)inputReader.next6ine!"".trim!".eLualsIgnore>ase!0ket thuc0""
{
?? mk ll dZ li[u v1 ghn kft Lu3 tr3 v` cho bifn outputData
outputData ) process!inputData";
??B\i kft Lu3 v` cho client
outputPriter.println!outputData";
'
??nong kft n2i cpa client Ufn server
clientocket.close!";
'
'
??ChWc hi[n xk ll chc 5]u cqu cpa client g\i l]n th4ng Lua dZ li[u
??lYu trZ trong inputData
private tring process!tring inputData"{
??n2i vri chc 5]u cqu khhc nhau chsng ta cqn xt5 dWng chc
??h1m xk ll khhc nhau7 co thV bao gum nhi`u h1m
??>hc h1m n]n tr3 v` dZ li[u l1 tring
??BXp chc kft Lu3 l1 chc chuii tr3 v` cpa chc h1m v1o th1nh
?? mXt chuii
return checkPerfectNumber!Integer.parseInt!inputData"";
'

?? Av dw8 >lient g\i l]n mXt chuii 5]u cqu server tr3 v` UX d1i chuii
?? nung thxi 5]u cqu cho bift tqn suSt xuSt hi[n chc kl tW trong chuii
?? Bi3i Lu5ft;
?? >qn xt5 dWng mXt h1m tr3 v` UX d1i cpa chuii dYri dbng tring
?? mt5 dWng mXt h1m khhc tr3 v` mXt chuii cho bift tqn suSt xuSt hi[n
??chc kl tW \ trong chuii Uo.
?? >hsng ta ghyp hai chuii kft Lu3 th1nh mXt chuii v1 g\i tr3 kft Lu3.
private tring checkPerfectNumber!int number"{
double sum ) *;
for !int i ) +; i , number-+; i.." {
if !number / i ))*" {
sum .) i;
'
'
if !number )) sum" {
return number . 0 l1 s2 ho1n h3o.0;
' else {
return number . 0 kh4ng l1 s2 ho1n h3o.0;
'
'
public static void main!tring9: args" thro#s I&$xception {
int port ) ;*;*;
erver server ) ne# erver!port";
server.runervices!";
'
'
lp #lient
package pab.demo;
import java.io.<ufferedReader;
import java.io.=ileReader;
import java.io.I&$xception;
import java.io.PrintPriter;
import java.net.ocket;
import java.util.canner;
public class >lient {
private ocket socketerver;
tring server; ?? >hz U_nh U_a chz cpa server co thV l1 ip
int port; ?? >{ng server cung cSp d_ch vw
private canner input7reader;
private PrintPriter output;
public >lient!tring server7int port" thro#s I&$xception {
this.server ) server;
this.port ) port;
'
private void run!" thro#s I&$xception{
main@enu!";
'
private void main@enu!" thro#s I&$xception {
int choosedAalue;
do {
socketerver ) ne# ocket!server7 port";
??ncc dZ li[u do ngYxi d|ng nh}p v1o td b1n phvm
reader ) ne# canner!5stem.in";
5stem.out.println!09+: - NJ~P D 6I% C <N PJ@0";
5stem.out.println!09H: - NJ~P D 6I% C =I6$ data.txt0";
5stem.out.println!09I: - FC CJ>0";
5stem.out.print!0<bn chcn8 0";
??ncc t|5 chcn cpa ngYxi d|ng
choosedAalue ) reader.nextInt!";
?? moa bX U[m
reader.next6ine!";
??Cbo luung Ucc dZ li[u tr3 v` td server
input ) ne# canner!socketerver.getInputtream!"";
??Cbo luung ghi dZ li[u UV tru5`n l]n server
output ) ne# PrintPriter!socketerver.get&utputtream!"7true";
??mk ll theo t|5 chcn cpa ngYxi d|ng
tring userData ) 00;
??Nfu ngYxi d|ng chcn xk ll dZ li[u trong file
if !choosedAalue )) H" {
reader ) ne# canner!ne# <ufferedReader!ne#
=ileReader!0data.txt0""";
'
#hile !choosedAalue K)I" {
if !choosedAalue )) +" {
5stem.out.print!0@xi bbn nh}p dZ li[u8 0";
??ncc dZ li[u do ngYxi d|ng nh}p v1o td b1n phvm
userData ) reader.next6ine!";
output.println!userData"; ?? B\i dZ li[u l]n server
if !KuserData.eLualsIgnore>ase!0ket thuc0"" {
??Nh}n v1 in kft Lu3 tr3 v` td server
5stem.out.println!0FC %8 0 . input.next6ine!"";
'else{
break; ?? Choht khi veng lap #hile !choosedAalue K
)I"
'
'
if !choosedAalue ))H" {
#hile !reader.hasNext!"" {
??ncc mXt deng dZ li[u trong file data.txt
userData ) reader.next6ine!";
output.println!userData"; ?? B\i dZ li[u l]n server
if !KuserData.eLualsIgnore>ase!0ket thuc0"" {
??Nh}n v1 in kft Lu3 tr3 v` td server
5stem.out.println!0FC %8 0 .
input.next6ine!"";
'
'
if !userData.eLualsIgnore>ase!0ket thuc0"" {
break; ?? Choht khi veng lap #hile !choosedAalue K)I"
'
'
'

' #hile !choosedAalue K)I";
'
public static void main!tring9: args" thro#s I&$xception {
>lient client ) ne# >lient!0localhost07 ;*;*";
client.run!";
'

'
file data$t%t c ni dung nh sau!
M
N
+*
HO
ket thuc

You might also like