Professional Documents
Culture Documents
Giáo Trình Lập Trình Mạng Phần 1
Giáo Trình Lập Trình Mạng Phần 1
TNG CC DY NGH
GIO TRNH
Tn M un: LP TRNH MNG
NGH: QUN TR MNG MY TNH
TRNH : CAO NG NGH
H Ni, Nm 2013
TUYN B BN QUYN
Ti liu ny thuc loi sch gio trnh nn cc ngun thng tin c th
c php dng nguyn bn hoc trch dng cho cc mc ch v o to v
tham kho.
Mi mc ch khc mang tnh lch lc hoc s dng vi mc ch kinh
doanh thiu lnh mnh s b nghim cm.
LI GII THIU
Ngy nay, mng my tnh tr thnh cng c khng th thiu trong tt c
cc lnh vc ca cuc sng. Vic nm bt nhng k thut qua hnh thnh
c k nng lp trnh mng c xem l yu cu cp thit i vi sinh vin
chuyn ngnh my tnh ni chung v qun tr mng ni ring. Gio trnh ny
c bin son nhm gip sinh vin lm quen vi nhng khi nim v k thut
mi trong lp trnh mng p ng c yu cu trong lp trnh mng.
6. Port
Mc tiu: Gii thch nguyn tc lm vic thng qua cng v Trnh by
cc s hiu v cng dng ca cc cng trong giao thc mng.
Nu bn mun trnh duyt Web v nhn email cng mt lc, my tnh ca
bn cn phi quyt nh bit lu lng truy cp mng email v cc trang web.
bit s khc bit, tt c cc mnh d liu trn mng c gn th vi mt cng
s: 80 cho cc trang Web, 110 cho cc email gi n. Thng tin ny c cha
trong mt trong hai giao thc iu khin ransmission (TCP) hoc User
Datagram Protocol (UDP) tiu ngay lp tc sau header IP. Bng 1.4 lit k
cc giao thc ph bin v lin kt s cng.
S hiu cng Qu trnh h thng
7 Dch v Echo
21 Dch v FTP
23 Dch v Telnet
25 Dch v E-mail (SMTP)
80 Dch v Web (HTTP)
110 Dch v E-mail (POP)
Bng 1.4 lit k cc giao thc ph bin v lin kt s cng
Qui nh :
- Khng bao gi c hai ng dng li dng cng 1 Port
- Cc Port t 0 -> 1023 : Dng cho cc ng dng quan trng trn h iu
hnh.
- Cc Port t 1024 -> 49151 : Dnh cho ngi lp trnh.
- Cc Port t 49152 -> 65535 :D tr
7. Internet standards
Mc tiu : trnh by cc chun Internet
Ch c cc tp on ln c th tr thnh thnh vin ca W3C. W3C l
chu trch nhim v ngn ng nh du siu vn bn (HTML), cascading style
sheets (CSS), ngn ng nh du m rng (XML). Khi pht trin mt ng dng
mng, iu quan trng l khng ti to li bnh xe hoc nu khng to ra mt
ng dng l khng cn thit khng tng thch vi cc ng dng khc cng
th loi. Cun sch ny thng cp n cc ti liu tiu chun, do , n l
ng gi bit ni tm thy chng. Mt tm gng sng l nng ng HTML,
c thc hin khc nhau trn Internet Explorer v Netscape Navigator. iu
ny c ngha rng hu ht cc trang web s dng HTML nng ng s khng
hot ng ng trn tt c cc trnh duyt. V vy, cc nh pht trin Web trnh
n v di chuyn v pha cng ngh qua trnh duyt, chng hn nh Macromedia
Flash v Java Applet. L do cho s sp ny l thiu tiu chun ha. Hai t
chc chu trch nhim chnh iu tit Internet tiu chun: Internet
Engineering Task Force (IETF) v World Wide Web Consortium (W3C). IETF
l mt t chc phi li nhun, trong quy nh cc giao thc c bn nht trn
Internet. Bt c ai cng c th gi mt giao thc h v n s c cng b
cng khai nh l mt yu cu cho kin (RFC) trn trang web ca h ti
www.ietf.org / rfc.html. Bng 1.5 lit k mt s ti liu quan trng RFC. W3C
(www.w3c.org) c thit k to thun li cho kh nng tng tc tiu chun
trong s cc nh cung cp. Ch c cc tp on ln c th tr thnh thnh vin
ca W3C. W3C l chu trch nhim v ngn ng nh du siu vn bn
(HTML), cascading style sheets (CSS), ngn ng nh du m rng (XML).
8 .NET framework
Mc tiu: Lit k cc thnh phn ca .NET Framwork, Gii thch cng dng
ca mi thnh phn, lp trnh cc bi tp nh trn mi trng .NET Framwork thng
qua lp trnh bin dch dng CLR.
.NET Framework l h tng c bn c chun ho, c lp ngn ng lp trnh,
cho php ngi lp trnh xy dng, tch hp, bin dch, trin khai, chy cc dch v
Web, XML, tin ch hay thc thi chng trnh a cu trc (pht trin bng cc ngn
ng lp trnh h tr .NET) trn h iu hnh c ci t .NET Framework.
8.1. Thnh phn .NET Framework
T khi Visual studio .NET ra i, n l mt IDE dng chung duy nht cho mi
ngn ng lp trnh v cc loi ng dng c c tch hp. Nh vy, ng dng Web
Forms (ASP.NET) c xem nh mt phn ca ngn ng lp trnh, bn c th s dng
chung IDE vi ng dng Windows Forms.
Chng hn, bn c th m d n (Project) bng ngn ng lp trnh Visual
Basic.NET, ri m tip mt Project bng ngn ng lp trnh C# trong cng mt
Solution.
Ngoi ra, Visual Studio.NET 2008 c s thay i ln so vi Visual Studio.NET
2003 l mi trng lp trnh, nh dng m, c ch g li, xy dng, kim tra v trin
khai ng dng, t ng ha v tr gip ngi s dng. V d, trang bt u ca Visual
Studio.NET 2008 IDE nh hnh 1-2
Hnh 1.2 : Trang bt u ca Visual Studio.NET 2008
Sau khi ci t thnh cng Visual Studio.NET 2008, ln u tin s dng
Visual Studio.NET 2008 IDE, mt ca s xut hin yu cu chn ngn ng lp trnh
mc nh. Chng hn, trong trng hp ny chng ta chn ngn ng lp trnh C# bng
cch di chuyn n Visual C# Development Setting v nhn mnh Start Visual Studio.
Lu , chng ta s tm hiu chi tit v nhng cng c, ca s, cch cu hnh
IDE lm vic vi ngn ng lp trnh C# trong nhng bi k tip.
Sau khi chn ngn ng lp trnh C# l ngn ng mc nh, mi khi to mi
Project hay Solution, ngn ng ny nm u tin trong ngn Project types nh hnh 1-
3, 3 ngn ng lp trnh cn li l Visual basic, C++ v J# s xut hin bn di phn
Other Language.
Program
CU HI N TP
Cu 1: Nu cc thnh phn chnh ca .NET Framework.
Cu 2: Trnh by s mi trng .NET Framework.
Cu 3: Lit k nhng c im chnh ca .NET Framework.
Cu 4: Lit k cc ng dng dng C#.
Cu 5: Trnh by cu trc chng trnh C#.
HNG DN TR LI:
Sinh vin nghin cu ti liu hc tp v cc thng tin lin quan tr li
cc cu hi trn, trnh by ngn gn v thc hin trn giy gi li gio vin
nh gi kt qu kim tra kin thc ca hc vin.
BI 2 : VN I/O TRONG .NET
M bi M35.1
Gii thiu : y l bi t nn tng cho hu nh tt c cc v d mng
cha trong cun sch ny. Nu khng c mt kin thc lm vic .NET v x
l I/O c th rt kh khn thch ng vi cc v d m trong cun sch ny vi
nhu cu lp trnh mng. Gip cho Sinh vin vn dng cc lp trong mi trng
.NET lp trnh mng c bit l cc lp trong System.IO.Streams ghi v
c cc d liu ln cc vng lu tr, trong h thng mng.
Mc tiu ca bi:
- Trnh by c khng gian tn I/O p dng cho cc mng truyn d liu.
- Lit k cc thnh phn ca khng tn System.IO.Streams c s dng
lin quan n mng.
- M t c i tng Streams.
- S dng khng tn System.IO ghi v c cc d liu ln cc vng lu
tr.
- S dng khng tn System.IO chuyn ti d liu, truy vn d liu
trn mng.
- Thc hin cc thao tc an ton vi my tnh.
1. Gii thiu v khng gian tn IO
Mc tiu: Nu cng dng ca lp IO trong qu trnh khi thc hin chuyn
ti d liu, truy vn d liu ln cc vng lu tr, trn h thng mng.
I/O p dng mng d liu chuyn giao, cng nh tit kim v ti a cng
ca bn my tnh ca Sau chng s m t lm th no thc hin chuyn
mng; tuy nhin, chng ny s c quan tm vi cc c bn I/O hot ng c
ph bin n c hai loi chuyn. Na u ca chng ny s chng minh lm th
no c v ghi vo a cng, bng cch s dng dng NET. Phn th hai ca
chng ny pht trin khi nim dng bng cch chng minh lm th no chuyn
i i tng phc tp, chng hn nh cc truy vn c s d liu vo mt nh dng
m c th c ghi vo mt dng NET.
2. Streams
Mc tiu: Vn dng lp Stream trong IO ca mi trng .NET xy
dng cc ng dng thc hin chuyn ti d liu, truy vn trong vng lu tr, h
thng mng.
2.1. M ha d liu
- Mt Form t tn l FormIO
- Mt File Open Dialog Control vi tn l openFileDialog
- Mt TextBox vi tn l tbResults, chn thuc tnh Multiline = true
- Hai Button vi tn gi l btnReadAsync v btnReadSync (btnReadAsync
s thc hin chc nng c tp tin theo c ch khng ng b, btnReadSync
s thc hin chc nng c tp tin theo c ch ng b)
Kt qu :
Vit code x l cho nt lnh readSync c tp tin theo c ch ng b:
V d:
[Serializable()]
public class Company
{
public string name;
public string address;
public string phone;
}
[Serializable()]
public class LineItem // Mt hng
{
public string description; // M t
public int quantity; // S lng
public double cost; // Gi
}
[Serializable()]
public class PurchaseOrder // t hng
{
private PurchaseOrderStates _purchaseOrderStatus;
private DateTime _issuanceDate;
private DateTime _deliveryDate;
private DateTime _invoiceDate;
private DateTime _paymentDate;
public Company buyer;
public Company vendor;
public string reference;
public LineItem[] items;
public PurchaseOrder()
{
_purchaseOrderStatus = PurchaseOrderStates.ISSUED;
_issuanceDate = DateTime.Now;
}
using System.Runtime.Serialization.Formatters.Soap;
// S dng XmlSerializer
XmlSerializer xmlSerializer = new XmlSerializer(po.GetType());
FileStream fs = File.Create("..\\po.xml");
xmlSerializer.Serialize(fs, po);
fs.Close();
}
public Form1()
{
InitializeComponent();
}
fs.Close();
}
}
tbResults.Text = info;
}
InfoMessage(s);
fs.Close();
}
CU HI N TP
Cu 1 : Nu khi nim v Stream.
Cu 3 : Nu phng thc truyn ng b v bt ng b ca Stream
Cu 2 : Nu phng thc canRead(); canSeek(); canwrite();
BI TP
Vit chng trnh thao tc vi File ging chng trnh qun l File ca
Norton Command (NC).
Vit chng trnh son tho File ging (Notepad) i vi File dng Text.
HNG DN THC HIN
1. Nghin cu ti liu l thuyt lin quan n bi thc hin cc cu hi
1,2,3
2. Nghin cu giao din v cng dng chng trnh Norton Command.
3. Phn tch cc chc nng ca bi tp
4. Thit k giao din (Form)
5. Vn dng cc phng thc canRead(); canSeek(); canwrite() xy
dng cc ng dng bi tp.
BI 3 : LM VIC VI SOCKETS
M bi: M35-03
Gii thiu: Trnh by m hnh client/server, lit k cc lp Socket. Vit cc ng
dng trn mng dng Socket.
Mc tiu ca bi:
M t m hnh client/server;
M t lp Socket;
Trnh by ch lm vic ca socket Clien v Server;
Vit cc ng dng trn mng dng Socket.
Thc hin cc thao tc an ton vi my tnh.
1. Gii thiu v socket trong lp trnh mng
Mc tiu: trnh by cng dng ca Socket trong lp trnh mng. M t cc cng
ca Socket v cc ch giao tip khi s dng cng trong Socket.
1.1. nh ngha
7 Dch v Echo
21 Dch v FTP
23 Dch v Telnet
25 Dch v E-mail (SMTP)
80 Dch v Web (HTTP)
110 Dch v E-mail (POP)
Sau khi chp nhn yu cu ni kt, thng thng server thc hin
lnh read() v nghn cho n khi c thng ip yu cu (Request
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
(ReplyMessage) 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 ca cc thng ip,
qui 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 qui nh ca giao thc.
Bn c th tm c m t chi tit ca cc Protocol c chun ha trong
cc ti liu RFC (Request For Comments). Ngc li, nu chng ta pht
trin mt ng dng Client-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.
Application.Exit()
End try
Vn na hay gp trong cc ng dng mng l kh nng m rng. y
l kh nng p ng ca ng dng vi s lng kt ni ln trong cng mt thi
im. th nghim, chng ta c th kch chut nhiu ln vo nt Connect hoc
Send trn ng dng client xem chng trnh c th b ng do ht b nh,
ngt gia chng, rt kt ni hay vn hot ng tt. pht hin ra li ca nhng
ng dng mng a lung, chng ta s dng lp System. Diagnostics.Trace, hoc
l cu lnh Console.WriteLine phng thc vo hoc thot ca chng trnh.
i vi cc ng dng mng c giao tip vi mt ng dng c phn
phi bi hng th 3, vic kim tra li gia client v server tr nn kh khn hn,
c bit khi m giao thc v cng kt ni khng c tit l hoc c m t
y . Trong trng hp ny, vic trc tin chng ta cn phi lm l kim tra
xem nhng cng no ang hot ng. Cng c hu ch lm vic ny l
netstat. m netstat, chng ta g netstat vo trong du nhc lnh hoc vo run.
Xem hnh sau
Netstat lit k tt c cc kt ni vo/ra trn my tnh ti thi im hin ti
cng vi s cng tng ng. Dng phng php i chiu khi chy v tc
chng trnh tm ra cng m chng trnh s dng. Vic xc nh cng ca
ng dng l bc u tin can thip vo trong giao thc, phn tch tng bit
v byte c gi qua li gia hai ng dng chng ta cn s dng cc cng c
phn tch khc v d Trace Plus ( www.sstinc.com).
5. Mc Socket trong .NET
Mc tiu: Vn dng lp socket lp trnh mng
Lp quan trng nht trong lp trnh mng vi .NET l lp socket. Lp
socket c th c s dng cho giao thc TCP/IP hoc UDP cho c client v
server.
Khng gian tn ca lp Sockets: System.Net.Sockets
Khai bo lp socket:
public class Socket : IDisposable
V d sau y minh ha ng dng server s dng lp socket.ng dng
server cho php lng nghe cc kt ni gi n server qua cng 8080.
on m chng trnh
private void btnListen_Click(object sender, System.EventArgs e)
{
int bytesReceived = 0; byte[] recv = new
byte[1]; Socket clientSocket;
Socket listenerSocket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp
);
IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName());
IPEndPoint ipepServer = new
IPEndPoint(IPHost.AddressList[0],8080);
listenerSocket.Bind(ipepServer);
listenerSocket.Listen(-1);
clientSocket = listenerSocket.Accept();
if (clientSocket.Connected)
{
do
{
bytesReceived = clientSocket.Receive(recv);
tbStatus.Text += Encoding.ASCII.GetString(recv);
}
while (bytesReceived!=0);
}
}
BI THC HNH CA HC VIN
Bi 1 : Vit chng trnh cho php gi file qua mng s dng giao thc
TCP/IP.
- Thi gian: 04 gi
Bc 2 : Vit m
//Cho nt kt ni
private void btnKetNoi_Click(object sender, EventArgs e)
{
_localPort = this.txtLocalPort.Text;
_remotePort = this.txtPort.Text;
_applications = new UdpClient(int.Parse(_localPort));
_thread = new Thread(Explore);
_thread.Start();
this.btnGoi.Click += btnGoiClick;
this.btnGoi.Enabled = true;
this.btnKetNoi.Enabled = false;
txtIP.ReadOnly = txtLocalPort.ReadOnly =txtPort.ReadOnly = true;
}
//Cho nt gi d liu i
public partial class Form1 : Form
{
string _localPort = "10";
string _remotePort = "1000";
UdpClient _applications = new UdpClient();
Thread _thread;
bool _exit = false;
delegate void ClearCacheReceivedData(string Data, string RemoteHost);
public Form1()
{
InitializeComponent();
}
}
private void ReceivedData(string Data, string RemoteHost)
{
if (lstReceived.InvokeRequired)
{
ClearCacheReceivedData clearCacheReceivedData = new
ClearCacheReceivedData(ReceivedData);
lstReceived.Invoke(clearCacheReceivedData, new object[] {Data, RemoteHost
});
return;
}
string msg = "";
msg = "(Ng_i gi: " + RemoteHost + ")" + Data;
lstReceived.Items.Insert(0, msg);
}
Bc 2 : Vit m
Cho Client
//Khai bo thm cc khng gian tn
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
//Kt ni n Server
private void btnConnect_Click(object sender, EventArgs e)
{
// nu cha kt ni thi im hin ti th i kt ni
if (Connected == false)
{
// Gi th tc ci t kt ni
InitializeConnection();
}
// nu kt ni ri th ngt kt ni
else
{
//Gi th tc ng kt ni
CloseConnection("Disconnected at user's request.");
}
}
{
// Will hold the user name
private string UserName = "Unknown";
//Bin gi d liu
private StreamWriter swSender;
//Bin ghi d liu
private StreamReader srReceiver;
//i tng TcpClient
private TcpClient tcpServer;
// Needed to update the form with messages from another thread
private delegate void UpdateLogCallback(string strMessage);
// Needed to set the form to a "disconnected" state from another thread
private delegate void CloseConnectionCallback(string strReason);
private Thread thrMessaging;
//Bin IP Address
private IPAddress ipAddr;
//Trng thi kt ni
private bool Connected;
public Form1()
{
// On application exit, don't forget to disconnect first
Application.ApplicationExit += new EventHandler(OnApplicationExit);
InitializeComponent();
}
swSender.WriteLine(txtUser.Text);
swSender.Flush();
// This method is called from a different thread in order to update the log TextBox
private void UpdateLog(string strMessage)
{
// Append text also scrolls the TextBox to the bottom each time
txtLog.AppendText(strMessage + "\r\n");
}
// Th tc ng kt ni hin ti
private void CloseConnection(string Reason)
{
// Xem l do ti sao kt ni b dng
txtLog.AppendText(Reason + "\r\n");
// Kch hot hoc ng cc iu khin
txtIp.Enabled = true;
txtUser.Enabled = true;
txtMessage.Enabled = false;
btnSend.Enabled = false;
btnConnect.Text = "Connect";
// ng cc i tng
Connected = false;
swSender.Close();
srReceiver.Close();
tcpServer.Close();
}
BI TP
Bi 1: Vit chng trnh Sever gii p tn min. Nu my khch gi tn my
th sever s gi v a ch IP (danh sch ny t to ra khon 3 cp minh
ho).
Bi 2: vit chng trnh UDP (ng dng A) t trn mt my thc hin cc
cng vic sau, khi mt ng dng B gi 1 kiu chui ting Anh th ng dng A s
gi tr li ngha ting Vit tng ng. Nu t ny khng c trong t in (ch c
3 t Computer,Ram,HDD)th ng dng A cho ngi dng bit t ny khng c
trong t in.
Bi 3: Vit chng trnh Client/Sever trong khi Client di chuyn chut th
sever cng di chuyn theo.
Bi 4: Vit Chng trnh Client/Server khi Client gi Shutdown,Restast th
Sever khi ng hoc tt my tng ng
Bi 5: Vit chng trnh Chat gia cc my tnh ?
HNG DN THC HIN
1. Nghin cu ti liu v l thuyt lin quan n bi thc hin cc cu
hi 1 n 14.
2. Phn tch cc chc nng ca cc bi tp
3. Thit k giao din (Form) cho mi bi tp.
4. Vn dng cc phng thc trong lp Sockets xy dng cc ng
dng bi tp.