Professional Documents
Culture Documents
LI CM N
Li u tin em xin c by t lng bit n chn thnh ti thy gio Ths.
ng Duy Thng - ging vin khoa CNTT trng HBK Nng, ngi thy
trc tip ging dy v tn tnh gip , ch bo em trong xut thi gian qua.
Cm n thy lun ng vin, hng dn, nh hng v truyn th cho em
nhng kin thc v cng qu bu em c th hon thnh lun n tt nghip
ny.
Em xin chn thnh cm n cc thy gio, c gio trng HBK Nng
v c bit l cc thy c trong b mn cng ngh thng tin, nhng ngi
khng ngng truyn t cho chng em nhng kin thc qu bu trong sut qu
trnh lm n.
Di y l nhng g em tm hiu v nghin cu c trong thi gian
qua. Do tnh thc t v kin thc cn hn ch, v vy em rt mong nhn c s
ch bo cu cc thy c gio v s tham gia ng gp kin ca cc bn em
c th hon thnh tt ti ca mnh.
Mt ln na em xin chn thnh cm n !
Nng, ngy.thng .nm 2013
Sinh vin
Trang 1
n lp trnh mng
MC LC
LI CM N.............................................................................................................................1
MC LC..................................................................................................................................2
LI NI U...........................................................................................................................4
CHNG 1: CN BN V MNG MY TNH....................................................................6
1.1. nh ngha mng my tnh.......................................................................................................6
1.2. Nhu cu pht trin mng my tnh..........................................................................................7
1.3. Phn loi mng my tnh..........................................................................................................8
1.4. Mt s topo mng thng dng................................................................................................10
1.5. Giao thc mng.......................................................................................................................11
1.5.1 Giao thc TCP...................................................................................................................................12
1.5.2 Giao thc UDP...................................................................................................................................13
Trang 2
n lp trnh mng
3.2.1 Lp Java.net.Socket.................................................................................................................36
3.2.2 Chng trnh TCPEchoClient..........................................................................................................36
KT LUN..............................................................................................................................48
Ti liu tham kho.........................................................................................................................49
Ti liu ting Vit.........................................................................................................................................49
Ti liu ting Anh.........................................................................................................................................49
Ti liu khc.................................................................................................................................................49
Ph lc.....................................................................................................................................50
M ngun chng trnh ng dng................................................................................................50
1. M ngun chng chnh pha Server........................................................................................................50
2. M ngun pha Clients..............................................................................................................................54
Trang 3
n lp trnh mng
LI NI U
Hin nay vn ton cu ho thng tin v tc pht trin ca khoa hc
cng ngh din ra mt cch nhanh chng, mt k nguyn mi c m ra; k
nguyn ca x hi ha thng tin. Cng ngh thng tin v truyn thng pht trin
a th gii chuyn sang thi i mi thi i ca cng ngh thng tin. Vic
nm bt v ng dng Cng ngh thng tin trong cc lnh vc khoa hc, kinh t,
x hi em li cho cc doanh nghip v cc t chc nhng thnh tu v li
ch to ln.
My tnh tr thnh cng c c lc v khng th thiu ca con ngi.
Cc t chc, cng ty hay cc c quan cn phi xy dng h thng mng my
tnh cho ring mnh trao i d liu gia cc b phn. D liu c truyn i
trn mng phi m bo: d liu c chuyn ti ch nhanh chng v ng
n. Hu ht d liu c truyn qua mng l truyn di dng file.
Nhm tm hiu thu o mt trong s cc phng php truyn file qua
mng em chn ti "Tm hiu lp trnh Socket TCP trong Java v ng dng
truyn file qua mng".
Vi lp trnh socket TCP s bt buc cc my phi c ni mng vi
nhau. Ta thy cc my mun trao i d liu qua mng, chng s to ra mi
pha mt socket v trao i d liu bng cch c/ghi t socket. Khi mt chng
trnh to ra mt socket, mt nh danh dng s (nh danh dng s ny cn c
gi l s hiu cng) s c gn cho socket. Vic gn s hiu cng ny cho
socket c th c thc hin bi chng trnh hoc h iu hnh. Trong mi gi
tin m socket gi i c cha hai thng tin xc nh ch n ca gi tin:
+ Mt a ch mng xc nh h thng s nhn gi tin.
+ Mt s nh danh cng ni cho h thng ch bit socket no trn
n s nhn d liu.
Ni dung n tt ny c gng lm r v lp trnh socket TCP v xy dng
chng trnh ng minh ha v truyn file qua mng bng ngn ng lp trnh
Java.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT
Trang 4
n lp trnh mng
Trang 5
n lp trnh mng
Trang 6
n lp trnh mng
Trang 7
n lp trnh mng
Trang 8
n lp trnh mng
- Mng din rng WAN (Wide Area Network): Mng WAN bao ph vng
a l rng ln c th l mt quc gia, mt lc a hay ton cu. Mng WAN
thng l mng ca cc cng ty a quc gia hay ton cu, in hnh l mng
internet. Do phm vi rng ln ca mng WAN nn thng thng mng WAN l
tp hp cc mng LAN, WAN ni li vi nhau bng cc phng tin nh: v
tinh (satellites), sng biva (microwave), cp quang, cp in thoi.
c im ca mng WAN:
+ Bng thng thp, d mt kt ni, thng ch ph hp vi cc ng dng
offine nh e-mail, web, ftp
+ Phm vi hot ng rng ln khng gii hn
+ Do kt ni ca nhiu LAN, WAN li vi nhau nn mng rt phc tp v
c tnh ton cu nn thng l c t chc quc t ng ra qun tr
+ Chi ph cho cc thit b v cc cng ngh mng WAN rt t tin
Trang 9
n lp trnh mng
Trang 10
n lp trnh mng
Trang 11
n lp trnh mng
Trang 12
n lp trnh mng
Trang 13
n lp trnh mng
Trang 14
n lp trnh mng
Trang 15
n lp trnh mng
Trang 16
n lp trnh mng
2.2.1. n gin
Nhng ngi thit k mong mun pht trin mt ngn ng d hc v quen
thuc vi a s ngi lp trnh. Do vy Java loi b cc c trng phc tp ca
C v C++ nh:
- Loi b thao tc con tr, thao tc nh ngha chng ton t
- Khng cho php a k tha m s dng cc giao din
- Khng s dng lnh goto cng nh file header (.h)
- Loi b cu trc struct v union
2.2.2. Hng i tng
Java l ngn ng lp trnh thun hng i tng. Mi chng trnh vit
trn Java u phi c xy dng trn cc i tng. Nu trong C/ C++ ta c
th to ra cc hm (khng gn vi i tng no) th trong Java ta ch c th to
ra cc hm (phng thc) gn lin vi mt i tng. Trong Java khng cho
php cc i tng c tnh nng a k tha m thay bng cc giao tip
2.2.3. c lp phn cng v h iu hnh
i vi cc ngn ng lp trnh truyn thng nh C/ C++, phng php
bin dch c thc hin nh sau :
Trang 17
n lp trnh mng
thnh dng chy c trn cc nn phn cng tng ng. Do vy, khi thay i
nn phn cng, khng phi bin dch li m ngun Java
Trang 18
n lp trnh mng
Trang 19
n lp trnh mng
Trang 20
n lp trnh mng
Trang 21
n lp trnh mng
import java.io.*;
// Phn 3: 0 hoc nhiu hn
// nh ngha cc lp v cc interface
public class New{...}
class C1 {...}
interface I1 {...}
// ...
class Cn {...}
interface Im {...}
Trang 22
n lp trnh mng
Trang 23
n lp trnh mng
Trang 24
n lp trnh mng
- c th thc hin cc cuc giao tip, mt trong hai qu trnh phi cng
b s hiu cng ca socket m mnh s dng. Mi cng giao tip th hin mt
a ch xc nh trong h thng. Khi qu trnh c gn mt s hiu cng, n c
th nhn d liu gi n cng ny t cc qu trnh khc. Qu trnh cn li cng
c yu cu to ra mt socket.
Ngoi s hiu cng, hai bn giao tip cn phi bit a ch IP ca nhau. a
ch IP gip phn bit my tnh ny vi my tnh kia trn mng TCP/IP. Trong
khi s hiu cng dng phn bit cc qu trnh khc nhau trn cng mt my
tnh.
Trang 25
n lp trnh mng
Qu trnh h thng
Dich v Echo
21
Dch v FTP
23
Dich v Telnet
25
Dch v E-mail(SMTP)
80
Dch v Web(HTTP)
110
Dch v E-mail(POP)
Trang 26
n lp trnh mng
Trang 27
n lp trnh mng
Sau khi chp nhn yu cu ni kt, thng thng server thc hin lnh
read() v ngh cho n khi c thng ip yu cu(Reaquest Message) t
client gi n.
Server phn tch v thc thi yu cu. Kt qu s c gi v client bng
lnh write().
Sau khi gi yu cu bng lnh write(), client ch nhn thng ip kt
qu (Reply Message) t server bng lnh read().
Trong giai on ny, vic trao i thng tin gia client v server phi tun
th giao thc ca ng dng (Dng thc v ngha cc thng ip, quy tc bt
tay, ng b ha). Thng thng client s l ngi gi yu cu n server
trc.
Nu chng ta pht trin ng dng theo cc protocol nh ngha sn,
chng ta phi tham kho v tun th ng nhng quy nh ca giao thc. Ngc
li, nu chng ta pht trin mt ng dng clients/server ring ca mnh, th cng
vic u tin chng ta phi thc hin l i xy dng protocol cho ng dng.
Giai on 4: Kt thc phin lm vic
Trang 28
n lp trnh mng
Trang 29
n lp trnh mng
Trang 30
n lp trnh mng
Trang 31
n lp trnh mng
- Sau y chng ta s xem xt chi tit cch thc trao i d liu ca socket
vi tng loi giao thc.
Socket h tr TCP
a. pha Server: Khi mt ng dng trn server hot ng n s to ra mt
socket v ng k vi server mt cng ng dng v ch i yu cu kt ni t
pha clients qua cng ny.
Trang 32
n lp trnh mng
Trang 33
n lp trnh mng
PortNumber: C gi tr t 0....65535
public InputStream getInputStream()
Phng thc ny tr v InputStream ni vi Socket. Chng trnh
clients dng InputStream ny nhn d liu t server gi v
public OutputStream getOutputStream()
Phng thc ny tr v OutputStream ni vi socket. Chng trnh
client dng OutputStream ny gi d liu cho server.
public close()
Phng thc ny s ng socket li, gii phng knh o, xa ni kt gia
clients v server.
3.2.2 Chng trnh TCPEchoClient
Trn h thng UNIX, dch v Echo c thit k theo kin trc
Client/Server s dng socket lm phng tin giao tip. Cng mc nh dnh
cho Echo Server l 7, bao gm c hai ch c kt ni v khng kt ni.
Chng trnh TCPEchoClient s kt ni n EchoServer ch c kt
ni, ln lt gi n EchoServer ch c kt ni, ln lt gi n
EchoServer 10 k t t 0 n 9 ch nhn kt qu tr v v hin th chng ra
mn hnh
Hy lu chng trnh sau vo tp tin TCPEchoClient.java
Import java,io.*
Import java.net.socket;
Public class TCPEchoClient{
Public static void main(String arg[]){
Try{
Socket s=new socket(args[0],7); // Ni kt n Server
InputStream is =s.getInputStream(); // Ly InputStream
OutputStream os = s.getOutputStream();
For(int i= 0; i<=9;i++){
Os.write(i);
Int ch= is.read();
System.out.print((char)ch);
}
}
Catch(IOException ie){
System.out.println(Loi khong tao duoc socket);
}
}
Trang 34
n lp trnh mng
Trang 35
n lp trnh mng
Trang 36
n lp trnh mng
Trang 37
n lp trnh mng
chp nhn kt
ni t client
sai
bo li
ng
Chn file cn gi cho
client
Gi file cho client
END
ng
Gi file mi
sai
Trang 38
n lp trnh mng
M un pha client
client to socket kt ni
n socket server
kt ni thnh
cng
sai
bo li
ng
END
Chn file cn gi cho
server
Gi file cho server
ng
Gi file mi?
sai
Trang 39
n lp trnh mng
cc file .class tng ng. Chng trnh c thc thi ti du nhc h thng
theo c php
c:\>java FileTransferServer
c:\>java FileTransferClient
Chy chng trnh server mode:
Chng trnh chy pha server c ch nh chy server mode, sau
my tnh ny s ch i cc kt ni t pha clients n n. Ta phi nhp tip
port number, ng vi server mode ny th ta c th chn bt c port number
no ln hn 1024, v nhng port number di 1024 b gi trc v s dng
bi h thng (well-known ports). Chng trnh ny cng c th thc hin giao
nhn file gia mt server v nhiu my clients ng thi trong mt h thng
mng nn n s yu cu ta nhp vo s lng my client ln nht c th kt ni
n server ny.
Chy chng trnh client mode:
Tng t cho pha bn client, chng trnh s yu cu nhp vo a ch ca
server (host address), ta c th nhp a ch IP hay nhp vo tn ca my chy
server mode u c (trong trng hp trn hnh bn di th tn my chy
server mode c a ch IP trong mng LAN l 192.168.1.43). Tip tc ta s nhp
port number (s hiu cng) ca server socket ( bit) cn kt ni n.
Trang 40
n lp trnh mng
Trang 41
n lp trnh mng
Hnh 4.3- Giao din pha server khi chn file truyn i
Trang 42
n lp trnh mng
Trang 43
n lp trnh mng
Hnh 4.11- Giao din pha server khi chn file truyn i
Trang 44
n lp trnh mng
KT LUN
Truyn file qua mng l mt trong nhng ng dng ph bin trn mng LAN
v Internet nh: ti xung cc file t mt my ch file xa, gi/nhn th in
t, ... Truyn file qua mng da trn Socket TCP l mt phng php truyn file
c tin cy cao bi v trc khi truyn n cn thit lp thnh cng knh truyn
d liu
Khng phi l phng php thay th hon ton nhng phng php truyn
file khc m ta tng s dng. Bn cht ca phng php truyn file da vo
Socket TCP l nhm tng thm hiu xut lm vic. ti Tm hiu lp trnh
socket TCP trong java v ng dng truyn file qua mng t c kt qu
nht nh.
V c s l thuyt, n trnh by c cc ni dung v mng my tnh,
s lc v ngn ng Java, lp trnh Socket TCP ni chung v lp trnh Socket
TCP trong Java ni ring; cc ni dung lin quan n truyn file quua mng.
V ng dng n phn tch mt cch kh chi tit c ch hot ng ca
chng trnh pha clients, pha server v ci t thnh cng chng trnh.
Java l mt ngn ng mnh m, tnh bo mt cao v c lp vi nn, do
chng trnh ng dng ca n c th d dng chy trn cc h thng khc
nhau m khng phi lp trnh li.
Tuy nhin, do hn ch v thi gian v trnh nn nhiu tnh nng ca
chng trnh cha c hon thin. Trong thi gian ti, chng trnh s c
hon thin theo hng b sung cc chc nng cho ph hp yu cu c th ca
vic truyn file qua mng, c th p dng vo thc t cuc sng.
Trang 45
n lp trnh mng
Trang 46
n lp trnh mng
Ph lc
M ngun chng trnh ng dng
1. M ngun chng chnh pha Server
//FileTransferServer
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FileTransferServer extends Frame {
public static String strHostAddress = "";
public static int intPortNumber = 0, intMaxClients = 0;
public static Vector vecConnectionSockets = null;
public static FileTransferServer objFileTransfer;
public static String strFileName = "",strFilePath = "";
public static Socket clientSocket = null;
public static ObjectOutputStream outToServer = null;
public static ObjectInputStream inFromServer = null;
public static void main (String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader
(System.in));
System.out.print("Chon so hieu cong de ket noi: ");
System.out.flush();
intPortNumber = Integer.parseInt(stdin.readLine());
System.out.print("So luong may Client co the ket noi: ");
System.out.flush();
intMaxClients = Integer.parseInt(stdin.readLine());
objFileTransfer = new FileTransferServer();
}
public Label lblSelectFile;
public Label lblTitle;
public Label lblStudentName;
public Label lblStudentClass;
public TextField tfFile;
public Button btnBrowse;
public Button btnSend;
public Button btnReset;
public FileTransferServer () {
setTitle("Chuong trinh truyen File phia Server");
Trang 47
n lp trnh mng
setSize(400 , 300);
setLayout(null);
addWindowListener(new WindowAdapter () { public void windowClosing
(WindowEvent e) { System.exit(0); } } );
lblTitle = new Label("Chuong trinh truyen File qua mang dua tren
Socket TCP ");
add(lblTitle);
lblTitle.setBounds(50,30,450,50);
lblSelectFile = new Label("Duong dan file can truyen:");
add(lblSelectFile);
lblSelectFile.setBounds(50,100,200,20);
lblStudentName = new Label("Sinh vien thuc hien:Pham Hong Thu");
add(lblStudentName);
lblStudentName.setBounds(130,250,200,20);
lblStudentClass = new Label("Lop : CT902");
add(lblStudentClass);
lblStudentClass.setBounds(130,270,100,20);
tfFile = new TextField("");
add(tfFile);
tfFile.setBounds(50,134,200,20);
btnBrowse = new Button("Chon File");
btnBrowse.addActionListener(new buttonListener());
add(btnBrowse);
btnBrowse.setBounds(283,133,70,20);
btnSend = new Button("Gui");
btnSend.addActionListener(new buttonListener());
add(btnSend);
btnSend.setBounds(100,200,50,20);
btnReset = new Button("Xoa");
btnReset.addActionListener(new buttonListener());
add(btnReset);
btnReset.setBounds(170,200,50,20);
show();
vecConnectionSockets = new Vector();
try {
ServerSocket welcomeSocket = new
ServerSocket(intPortNumber,intMaxClients);
while (true) {
vecConnectionSockets.addElement(new
ThreadedConnectionSocket(welcomeSocket.accept()));
Thread.yield();
}
} catch (IOException ioe) {System.out.println(ioe);}
Trang 48
n lp trnh mng
}
public static String showDialog () {
FileDialog fd = new FileDialog(new Frame(),"Select
File...",FileDialog.LOAD);
fd.show();
return fd.getDirectory()+fd.getFile();
}
private class buttonListener implements ActionListener {
public void actionPerformed (ActionEvent ae) {
byte[] arrByteOfSentFile = null;
if (ae.getSource() == btnBrowse) {
strFilePath = showDialog();
tfFile.setText(strFilePath);
int intIndex = strFilePath.lastIndexOf("\\");
strFileName = strFilePath.substring(intIndex+1);
}
if (ae.getSource() == btnSend) {
try {
FileInputStream inFromHardDisk = new FileInputStream (strFilePath);
int size = inFromHardDisk.available();
arrByteOfSentFile = new byte[size];
inFromHardDisk.read(arrByteOfSentFile,0,size);
for (int i=0;i<vecConnectionSockets.size();i++)
{
ThreadedConnectionSocket tempConnectionSocket =
(ThreadedConnectionSocket)vecConnectionSockets.elementAt(i);
tempConnectionSocket.outToClient.writeObject("IsFileTransfered");
tempConnectionSocket.outToClient.flush();
tempConnectionSocket.outToClient.writeObject(strFileName);
tempConnectionSocket.outToClient.flush();
tempConnectionSocket.outToClient.writeObject(arrByteOfSentFile);
tempConnectionSocket.outToClient.flush();
}
JOptionPane.showMessageDialog(null,"Ban da gui thanh cong file toi
Client","Xac nhan",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {}
}
if (ae.getSource() == btnReset) {
tfFile.setText("");
}}}
class ThreadedConnectionSocket extends Thread {
public Socket connectionSocket;
public ObjectInputStream inFromClient;
Trang 49
n lp trnh mng
Trang 50
n lp trnh mng
Trang 51
n lp trnh mng
Trang 52
n lp trnh mng
while (true) {
Object objRecieved = inFromServer.readObject();
switch (intFlag) {
case 0:
if (objRecieved.equals("IsFileTransfered")) {
intFlag++;
}
break;
case 1:
strFileName = (String) objRecieved;
int intOption =
JOptionPane.showConfirmDialog(this,clientSocket.getInetAddress().get
HostName()+" dang gui "+strFileName+"!\nBan co chac chan nhan
khong?","Thong
bao",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);//xac
nhan
if (intOption == JOptionPane.YES_OPTION) {
intFlag++;
} else {
intFlag = 0;
}
break;
case 2:
byte[] arrByteOfReceivedFile = (byte[])objRecieved;
FileOutputStream outToHardDisk = new FileOutputStream(strFileName);
outToHardDisk.write(arrByteOfReceivedFile);
intFlag = 0;
JOptionPane.showMessageDialog(this,"Ban dong y nhan file nay tu
Server","Thong bao",JOptionPane.INFORMATION_MESSAGE);//file dc
nhan;su chung thuc, su xac thuc
break;
}
Thread.yield();
}
} catch (Exception e) {System.out.println(e);}
}
public static String showDialog () {
FileDialog fd = new FileDialog(new Frame(),"Select
File...",FileDialog.LOAD);
fd.show();
return fd.getDirectory()+fd.getFile();
}
private class buttonListener implements ActionListener {
Trang 53
n lp trnh mng
Trang 54
n lp trnh mng
Trang 55