Professional Documents
Culture Documents
Lập Trình Socket Và UDPTCP
Lập Trình Socket Và UDPTCP
Bin tp bi:
Khoa CNTT HSP KT Hng Yn
MC LC
1. Khi nim a ch v cng (Address & Port)
2. Lp IPAddress
3. Lp IPEndpoint
4. Lp IPHostEntry
5. Lp DNS
6. Lp UDP
7. Lp TCP
8. Lp TCPListener
9. Bi tp
Tham gia ng gp
1/38
Nguyn l:
+ Trong mt my c rt nhiu ng dng mun trao i vi cc ng dng khc thng qua
mng. (v d trn c 2 ng dng trong my A mun trao i vi vi 2 ng dng trn
my B)
+ Mi my tnh ch c duy nht mt ng truyn d liu ( gi v nhn)
Vn :
Rt c th xy ra "nhm ln" khi d liu t my A gi n my B th khng bit l d
liu gi cho ng dng no trn my B?
Gii quyt:
Mi ng dng trn my B s c gn mt s hiu (m ta vn quen gi l cng : Port),
s hiu cng ny t 1..65535. Khi ng dng trn my A mun gi cho ng dng no
trn my B th ch vic in thm s hiu cng (vo trng RemotePort) vo gi tin cn
gi. Trn my B, Cc ng dng ch vic kim tra gi tr Cng trn mi gi tin xem c
2/38
3/38
Lp IPAddress
Gii thiu
Trn Internet mi mt trm (c th l my tnh, my in, thit b ) u c mt nh danh
duy nht, nh danh thng c gi l mt a ch (Address). a ch trn Internet
l mt tp hp gm 4 con s c gi tr t 0-255 v cch nhau bi du chm.
th hin a ch ny, ngi ta c th vit di cc dng sau:
Tn : v d May01, Server, .
a ch IP nhng t trong mt xu: ", "127.0.0.1"
t trong mt mng 4 byte, mi byte cha mt s t 0-255. V d biu din
a ch 192.168.1.1 ta c th vit:
Dim DiaChi(3) as Byte"192.168.1.1
DiaChi(0) = 192
DiaChi(1) = 168
DiaChi(2) = 1
DiaChi(3) = 1
Hoc cng c th l mt s (long), c di 4 byte. V d, vi a ch
192.168.1.1 trn th gi tr s l: 16885952 (y l s h thp phn khi
xp lin 4 byte trn li vi nhau 00000001 00000001 10101000 11000000
1 (Byte 0) 1 168 192 (Byte 3)
? Nh vy, i mt a ch chun ra dng s ta ch vic tnh ton cho tng thnh phn.
V d: i a ch 192.168.1.2 ra s, ta tnh nh sau :
2 * 256 ^ 3 + 1* 256 ^ 2 + 168 * 256 ^ 1 + 192 * 256 ^ 0
Trong MS.NET, IPAddress l mt lp dng m t a ch ny. y l lp rt c bn
c s dng khi chng ta thao tc (truyn) vo cc lp nh IPEndpoint, UDP, TCP,
Socket
Cc thnh vin ca lp
4/38
V d
1. To mt a ch IP (To mt i tng IPAddress) c gi tr l 16885952
00000001 00000001 10101000 11000000
5/38
6/38
7/38
Lp IPEndpoint
Gii thiu
Trong mng, hai trm c th trao i thng tin c vi nhau th chng cn phi bit
c a ch (IP) ca nhau v s hiu cng m hai bn dng trao i thng tin. Lp
IPAddress mi ch cung cp cho ta mt v l a ch IP (IPAddress), cn thiu v th
hai l s hiu cng (Port number). Nh vy, lp IPEndpoint chnh l lp cha ng c
IPAddress v Port number.
i tng IPEndpoint s c dng sau ny truyn trc tip cho cc i tng UDP,
TCP
Cc thnh vin ca lp
8/38
V d
To mt i tng IPEndpoint c a ch l "127.0.0.1", cng l 1000
to mt IPEndpoint, ta c th dng 2 hm thit lp, trong c mt hm thit lp i
hi phi truyn mt i tng IPAddress vo. Khi chng ta cn phi to i tng
IPAddress trc theo cc cch nh cp trong phn 1.
9/38
Lp IPHostEntry
Gii thiu
IPHostEntry l lp cha (Container) v thng tin a ch ca cc my trm trn Internet.
Lu : N ch l ni "cha" , do vy trc khi s dng cn phi "Np" thng tin vo
cho n.
Lp ny rt hay c dng vi lp DNS
Cc thnh vin ca lp
10/38
Lp DNS
Gii thiu
DNS (Domain Name Service) l mt lp gip chng ta trong vic phn gii tn min
(Domain Resolution) n gin. (Phn gii tn min tc l : u vo l Tn ca my
trm, v d ServerCNTT th u ra s cho ta a ch IP tng ng ca my , v d
192.168.3.8)
Ngoi ra lp Dns cn c rt nhiu phng thc cho ta thm thng tin v my cc b nh
tn, a ch v.v
Cc thnh vin ca lp
11/38
V d
1. Hin th tn ca my tnh hin ti
MsgBox(Dns.GetHostName())
1. Hin th tt c a ch IP ca mt my no .
12/38
1. To mt IPHostEntry t my c tn l "Notebook"
2. To mt IPHostEntry t a ch "127.0.0.1"
3. To mt IPHostEntry t mt i tng IPAddress, c a ch IP l 127.0.0.1
13/38
Lp UDP
Gii thiu
Giao thc UDP (User Datagram Protocol hay User Define Protocol) l mt giao thc phi
kt ni (Connectionless) c ngha l mt bn c th gi d liu cho bn kia m khng
cn bit l bn sn sng hay cha ? (Ni cch khc l khng cn thit lp kt ni
gia hai bn khi tin hnh trao i thng tin). Giao thc ny khng tin cy bng giao
thc TCP nhng tc li nhanh v d ci t. Ngoi ra, vi giao thc UDP ta cn c
th gi cc gi tin qung b (Broadcast) cho ng thi nhiu my.
Trong .NET, lp UDPClient (nm trong System.Net.Sockets) ng gi cc chc nng
ca giao thc UDP.
14/38
ng b : Synchronous
Khng ng b : Asynchronous
15/38
V d
Chuyn i mt xu k t sang mng byte:
16/38
17/38
1. Vit chng trnh tng hp CHAT gia hai my dng giao thc UDP
M t giao din:
18/38
20/38
Tng kt:
Khi mun gi d liu qua mng bng lp UDPClient, ta theo cch n gin nht nh
sau:
21/38
Khi nhn:
Dng phng thc Receive nhn d liu v. Phng thc i hi ta phi ch ra l
ly v t my no ? (m i din l mt IPEndPoint). Khi ta cn to mt i tng
IPEndPoint vi a ch v s hiu cng ca my chy ng dng m ta mun nhn d
liu.
Phng thc ny tr v cho ta d liu dng mng byte, do vy chuyn sang dng
xu k t th cn dng lp Encoding chuyn i.
Phng thc Receive lm vic ch ng b (Tc l s lun Blocking khi cha c
d liu nhn) do vy thng ta s dng c ch a tuyn gii quyt trng hp ny.
(Phn Receive s c t trong mt tuyn ring bit)
Bi tp:
Bi 1: Vit chng trnh UDP t hai my thc hin cng vic sau:
Khi mt ng dng gi xu "OPEN#<ng dn >" th ng dng trn my kia
s m file nm trong phn <ng dn>
Khi mt ng dng gi xu "SHUTDOWN" th ng dng kia s tt my tnh.
Khi mt ng dng gi xu "RESTART" th ng dng kia s tt khi ng li
my tnh.
Bi 2: Vit chng trnh UDP (ng dng A) t trn mt my. thc hin cc cng vic
sau:
22/38
23/38
Lp TCP
Gii thiu
Mc ch ca lp UDPClient trn l dng cho lp trnh vi giao thc UDP, vi giao
thc ny th hai bn khng cn phi thit lp kt ni trc khi gi do vy mc tin
cy khng cao. m bo tin cy trong cc ng dng mng, ngi ta cn dng
mt giao thc khc, gi l giao thc c kt ni : TCP (Transport Control Protocol). Trn
Internet ch yu l dng loi giao thc ny, v d nh Telnet, HTTP, SMTP, POP3
lp trnh theo giao thc TCP, MS.NET cung cp hai lp c tn l TCPClient v
TCPListener.
Description
TcpClient ()
TcpClient
(IPEndPoint)
TcpClient
(RemoteHost: String,
RemotePort: Int32)
[link]
To mt i tng TcpClient v kt ni n mt my c a
ch v s hiu cng c truyn vo.. RemoteHost c th l
a ch IP chun hoc tn my.
Description
Available
Client
Description
24/38
Close
Connect
(RemoteHost, Kt ni n mt my TCP khc c Tn v s hiu cng.
RemotePort)
GetStream
V d
To mt TCP Client v kt ni n server (FTP Server-listen on 21 port), sau gi 1
xu.
Imports System.Net.Sockets
Imports System.Net
Imports System.IO
25/38
26/38
28/38
29/38
End Class
Giao din:
Ghi ch: Nu mun c hay ghi d liu dng chui byte th khai bo Doc, Ghi
AsNetworkStream.
Bi tp: Vit ng dng chi c Caro / C tng (Hay bt k c g khc !!!) qua mng.
(S dng giao thc UDP). Gi : mi khi ngi dng i th s gi v tr ca va i cho
ng dng kia (i phng).
30/38
Lp TCPListener
Gii thiu
TCPListerner l mt lp cho php ngi lp trnh c th xy dng cc ng dng Server
(V d nh SMTP Server, FTP Server, DNS Server, POP3 Server hay server t nh
ngha .). ng dng server khc vi ng dng Client ch n lun lun thc hin lng
nghe v chp nhn cc kt ni n t Client.
Cc thnh vin ca lp
Constructor method
Name
Description
TcpListener
(IPEndPoint)
TcpListener (IPAddress,
Port: Int32)
Description
AcceptSocket
AcceptTcpClient
Pending
Start
Stop
V d
To mt server trong , khi c mt client kt ni n th server chuyn xu thnh
ch HOA v gi tr li cho Client.
Listing 3: Xy dng mt ng dng Server n gin
Imports System.Net.Sockets
Imports System.Net
Imports System.IO
Imports System.Threading
Public Class frmServer
Dim TCPServer As New System.Net.Sockets.TcpListener(21)
Dim Thoat As Boolean = False
Dim Clients(100) As TcpClient
Dim CurrClient As Integer = 0
-----------------------------------------------------------------------------------------------------------------------Sub X_L_Kt_Ni()
Dim LastClient As Integer = CurrClient - 1
Dim Con As TcpClient = Clients(LastClient)
Dim Doc As New StreamReader(Con.GetStream)
Dim Ghi As New StreamWriter(Con.GetStream)
Dim S As String
While Thoat = False
Application.DoEvents()
32/38
33/38
34/38
Bi tp
Vit chng trnh kim tra xem my 192.168.1.1 c dch v FTP ang chy
hay khng ?
Vit chng trnh kim tra xem my "Servercntt" c dch v FTP ang chy
hay khng ?
Vit chng trnh Telnet trn cho hon thin.(c th thay i tn my,
cng)
Vit chng trnh Server gii p tn min. Nu my khch gi tn my th
server s gi v a ch IP. (danh sch ny t to ra khong 3 cp minh
ha).
Vit chng trnh Client/Server. Khi Client gi ng dn ca tp nm trn
my server th server gi tr cho Client ni dung ca tp .
Vit chng trnh Client/Server thc hin CHAT. Trong cc client gi
cho nhau thng qua "trm trung chuyn" l Server.
Vit chng trnh SMTP server (giao thc c gi cho lp).
Vit chng trnh client/server trong , khi client di chuyn chut th server
cng di chuyn chut theo. (dng cc hm API v SetCursorPos)
Vit chng trnh Client/Server: Khi client gi s xu "shutdown", "restart"
th Server s tt my v khi ng tng ng. (dng hm API ExitWindow)
35/38
Tham gia ng gp
Ti liu: Lp trnh Socket v UDP,TCP
Bin tp bi: Khoa CNTT HSP KT Hng Yn
URL: http://voer.edu.vn/c/a516d57c
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Khi nim a ch v cng (Address & Port)
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/f0b92bca
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Lp IPAddress
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/de7fc0f9
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Lp IPEndpoint
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/9ed2c3fa
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Lp IPHostEntry
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/3c3b4078
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Lp DNS
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/e30bc4e0
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Lp UDP
Cc tc gi: Khoa CNTT HSP KT Hng Yn
URL: http://www.voer.edu.vn/m/b06d7be5
36/38
37/38
38/38