LẬP TRÌNH MẠNG - itshare24h.comitshare24h.com/wp-content/uploads/2017/05/Chuong-01_-Nhung-van-d… · Tài nguyên của kênh đó không được ... Những vấn đề cơ

Embed Size (px)

Citation preview

  • LP TRNH MNG(Network programming)

    1

    Ging vin: Ths. Trn c Tt Khoa CNTT

    Email: [email protected]

    Website: www.oktot.com

    Facebook: https://www.facebook.com/oktotcom/

    TRNG I HC CNG NGHIP THC PHM TP.HCM

    Chng 1: Nhng vn c bn ca lp trnh mng

    mailto:[email protected]://www.oktot.com/https://www.facebook.com/oktotcom/

  • MN HC: LP TRNH MNG

    2

    Chng 1: Nhng vn c bn ca lp trnh mng

    Chng 2: Lp trnh SOCKET hng kt ni

    Chng 3: Lp trnh SOCKET phi kt ni

    Chng 4: S dng cc lp tr giup ca C# SOCKET

    Chng 5: Lp trinh a lung (MULTI-THREADING)

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 3

    CHNG 1: NHNG VN C BN CA LP TRNH MNG

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hnh tham chiu

    Tng quan v lp trinh mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 4

    Mc ch: Gii thiu cc khi nim c bn v

    Mng my tnh, truyn thng mng my tnh

    M hinh OSI, TCP/IP

    Windows Socket

    Lp trnh Socket trong C#

    Cc lp DNS trong C#

    Yu cu: Sinh vin nm vng cc khi nim c bn v

    Lp trnh mng

    S dng socket trong lp trnh mng

    MC CH YU CU

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 5

    CHNG 1: NHNG VN C BN CA LP TRNH MNG

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hnh tham chiu

    Tng quan v lp trinh mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 6

    C bn v mng my tnh

    Chng 1: Nhng vn c bn ca lp trnh mng

  • C bn v mng my tnh

    7

    Khi nim mng my tnh

    Tp hp cc my tnh v thit b mng kt ni vi nhau theo mt kin

    trc no trao i d liu

    My tnh: my trm, my ch,

    b nh tuyn, switch..

    Kt ni bng phng tin truyn thng

    Theo mt kin trc no

    Cc dng my tnh ?

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 8

    C bn v mng my tnh

    Internet ngy nay

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 9

    C bn v mng my tnh

    X l tp trung hay phn tn

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 10

    C bn v mng my tnh

    Kin trc mng: Hnh trng (topology) v giao thc (protocol)

    Chng 1: Nhng vn c bn ca lp trnh mng

    Thc t l s kt hp ca nhiu hnh trng

    Trc (Bus) Vng (Ring) Sao (Star)

  • 11

    C bn v mng my tnh

    Giao thc l g?

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 12

    C bn v mng my tnh

    Giao thc mng

    Chng 1: Nhng vn c bn ca lp trnh mng 20

    Protocol: Quy tc truyn thng

    Gi: Mt thng ip vi yu cu hoc thng tin

    Nhn: Nhn mt thng ip vi thng tin, s kin hoc hnh ng

    nh ngha khun dng v th t truyn, nhn thng ipgia cc thc th trn mng hoc cc hnh ng tng ngkhi nhn thng ip

    V d v giao thc mng: TCP, UDP, IP, HTTP,Telnet, SSH, Ethernet,

  • 13

    CHNG 1: NHNG VN C BN CA LP TRNH MNG

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hnh tham chiu

    Tng quan v lp trinh mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • M hnh truyn thng

    Chuyn mch knh

    Trao i d liu s dng mt knh ring

    Mi lin kt s dng mt knh. Ti nguyn ca knh khng c s bi knh

    khc cho n khi ng lin kt

    Ti nguyn c gn ring cho mi knh, k c khi ti nguyn ang ri, ngi

    khc cng khng s dng c

  • M hnh truyn thng

    Chuyn mch gi

    D liu c chia thnh cc gi(packets) v c truyn qua mng

    Nhiu lin kt c th chia s mt knh

    Internet (Vi giao thc IP) s dng chuyn mch gi

    Ton b bng thng c chia s cho tt c mi ngi

    Nu cn bng thng th ai cng c th s dng c

  • 16

    M hnh truyn thng

    So snh

    Chng 1: Nhng vn c bn ca lp trnh mng

    Chuyn mch knhMi knh ch s dng mt lin kt

    Bo m bng thng (cn cho cc ng dng audio/video)

    Lng ph nu lin kt khng s dng ht kh nng ca knh

    Chuyn mch giTng hiu qu s dng bng thng

    Tt cho cc d liu n ngu nhin, khng nh trc

    Hn ch: Tc ngh lm tr v mt gi tin, khng m bo bng thng

  • 17

    M hnh truyn thng

    Truyn thng hng lin kt v khng hng lin kt

    Truyn thng hng lin kt

    D liu c truyn qua mt lin kt c thit lp

    Thng qua 3 giai on: Thit lp lin kt, truyn d liu hy b lin

    kt.

    ng tin cy

    Truyn thng khng hng lin kt

    Khng thit lp lin kt, ch c giai on truyn d liu

    Khng tin cy - Best effort

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 18

    CHNG 1: NHNG VN C BN CA LP TRNH MNG

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hnh tham chiu

    Tng quan v lp trinh mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 19

    Cc m hnh tham chiu

    OSI - Open System Interconnection: Bao gm 7 tng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 20

    Cc m hnh tham chiu

    Chc nng chung ca cc tng

    Vt l: Truyn bits trn ng truyn

    Lin kt d liu: Truyn d liu gia cc thnh phn ni kt trong mng

    Mng: chn ng, chuyn tip gi tin t ngun ti ch

    Giao vn: X l vic truyn-nhn d liu cho cc ng dng

    Phin: ng b ha, check-point, khi phc qu trnh trao i

    Trnh din: cho php cc ng dng biu din d liu, e.g., m ha, nn,

    chuyn i

    ng dng: H tr cc ng dng trn mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 21

    Cc m hnh tham chiu

    M hnh OSI v TCP/IP

    Trong m hnh TCP/IP (Internet), chc nng 3 tng trn c phn nh

    vo mt tng duy nht

    Chng 1: Nhng vn c bn ca lp trnh mng

  • Ethernet/10M

    CAT5

    IP

    FTP

    TCP

    IP

    100M/Ethernet

    CAT5

    IP

    FTP

    TCP

    Ngun chNt trung gian

    100M

    CAT5

    10M

    CAT5

    V d v qu trnh gi d liu t ngun, qua nt trung gian (b inh tuyn), ri ti ch

    Chng 1: Nhng vn c bn ca lp trnh mng

    M hnh phn tng ca Internet

  • a ch

    Gi qu

    Trang tr

    Dn a ch

    a ch

    Chng 1: Nhng vn c bn ca lp trnh mng

    ng gi d liu (Encapsulation)

  • (N+1) PDU

    (N) PDU

    (N-1) PDU

    HN

    HN HN-1

    Layer (N+1)

    Layer (N-1)

    Layer (N)

    Service interface

    Protocol N

    Service interface

    Protocol N-1

    addr.

    Chng 1: Nhng vn c bn ca lp trnh mng

    PDU: Protocol Data Unit n v d liu giao thc

  • Data Data

    ExHTTP header

    TCP header

    IP header

    Ethernet Frame

    Signal

    Application

    TCP

    IP

    Network Interface

    Physical

    Sender

    Bn gi

    Mi tng thm cc thng tin iu khin (header) vo gi tin v truyn xung tngdi

    Bn nhn

    Mi tng x l thng tin da trn phn header, sau b header v truyn d liu ln

    tng trn

    Physical

    Receiver

    Application

    TCP

    IP

    Network Interface

    H giao thc TCP/IP v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    D

    End node

    liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    TCP header

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    IP header TCP header

    End node

    D liu - payload

    Protocol stack v qu trnh ng gi

  • CAT5

    End node End nodeIntermediate node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    D liu - payloadEthernet header IP header TCP header

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    IP header TCP header

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    IP header TCP header

    End node

    D liu - payload

    End node

    WDM header

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    IP header TCP header

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node End nodeIntermediate node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    D liu - payloadEthernet header IP header TCP header

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    IP header TCP header

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    Intermediate node

    TCP header

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • CAT5

    End node Intermediate node

    CAT5

    Ethernet/10M

    IP

    FTP

    TCP

    Ethernet/100M

    IP

    FTP

    TCP

    10M

    IP

    10G

    CAT5 WDM

    10G

    IP

    WDM CAT5

    End node

    D liu - payload

    Chng 1: Nhng vn c bn ca lp trnh mng

    Protocol stack v qu trnh ng gi

  • Chng 1: Nhng vn c bn ca lp trnh mng

    Tm tt: u im ca kin trc phn tng

    Chia nh cho php d dng xc nh chc nng ca mi tng

    Cc tng hot ng c lp

    Tng trn ch quan tm n vic s dng tng di m khng quan tm

    n cc tng xa hn.

    Cho php nh ngha giao din chung gia cc tng

    Kh nng m rng

    Mm do, linh hot vi cc cng ngh mi

    Trao i gia cc tng ng mc: C th ci tin h thng bng cch thay

    i cng ngh ca tng tng ng. Vd: ISDNADSLFTTHIPv4IPv6

    Nu khng phn tng: Khi mun thay i, phi lm ton b

  • application

    TCP/UDP

    IP

    data linke.g. 00:11:24:79:8e:82

    physical

    Port Number, e.g. Port 80

    IP address, e.g. 203.12.15.165

    Physical address / MAC address

    Chng 1: Nhng vn c bn ca lp trnh mng

    nh danh trn Internet v quan h vi cc tng

  • a ch vt l /a ch MAC

    S dng trong tng lin kt d liu

    C nh trn card mng NIC ( Network Interface Card)

    S dng a ch ha my tnh trong cc mng qung b

    00:11:24:79:8e:8200000000 00010001 00100100 01111001 10001110 10000010

    HEX

    OUI Gn bi nh sn xut

    OUI (Organizationally Unique Identifier): M nh sn xut

    Mi nh sn xut c cc gi tr OUI ring

    Mt nh sn xut c th c nhiu OUI

    BIN

    Chng 1: Nhng vn c bn ca lp trnh mng

    a ch dng trong tng lin kt d liu

  • a ch IP

    Dng trong giao thc IP - Internet Protocol (tng mng)

    Gi tr ph thuc tng mng, mi card mng c gn mt a ch IP

    S dng nh danh my tnh trong mt mng IP

    v d :

    133.113.215.10 (ipv4)

    2001:200:0:8803::53 (ipv6)

    Chng 1: Nhng vn c bn ca lp trnh mng

    nh danh dng trn Internet

  • Chng 1: Nhng vn c bn ca lp trnh mng

    a ch s dng trong tng giao vn

    S hiu cng: Mt a ch ph, dng km theo a ch IP

    Cc ng dng c nh danh bi mt a ch IP v mt s hiu cng

    E.g. HTTP cng 80, FTP cng 20, 21

  • 42

    Cc RFC quan trng

    RFC Document Giao thc

    RFC 821 SMTP (email, outgoing)

    RFC 954 WHOIS

    RFC 959 FTP (uploading and downloading)

    RFC 1939 POP3 (email, incoming)

    RFC 2616 HTTP (Web browsing)

    RFC 793 TCP (runs under all above protocols)

    RFC 792 ICMP (ping)

    RFC 791 IP (runs under TCP and ICMP)

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 43

    CHNG 1: NHNG VN C BN CA LP TRNH MNG

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hnh tham chiu

    Tng quan v lp trinh mng

    Chng 1: Nhng vn c bn ca lp trnh mng

  • M hnh Client / Server

    44

    X l

    Yu cu

    Phc v

    Lng nghe yu cu

    Nhn yu cu

    X l yu cu

    Gi kt qu tr v

    cho Client

    To ra 1 yu cu

    Gi yu cu qua Server

    Ch Server x l

    Nhn kt qu tr v v

    x l theo mc ch ring

    Dng thc ca thng ip phi tun theo protocol ca dch v.

  • M hnh Client / Server

    Web Client

    Web Serverfile1.htm

    Trnh duytTrang

    Web

    X l

    M hnh Client-Server ca dch v WEB:

  • M hnh Client / Server

    Cc ch giao tip:

    Ch giao tip nghn Ch giao tip khng nghn

  • Cc kiu kin trc chng trnh

    Chc nng ca 1 chng trnh ng dng:

    Giao din ngi dng (User Interface):

    Tng tc vi ngi dng

    Nhp liu, bo biu, thng bo ra mn hnh,

    Dch v nghip v (Business Rule):

    Tnh ton d liu

    X l thng tin

    Dch v lu tr (Data Storage):

    Lu tr d liu

    Truy vn d liu

  • Cc kiu kin trc chng trnh

    GOLDMAN: CSIS FIG. 01-11

    Presentation

    Application

    Data

    Communication

    Presentation Logic

    Interfaces to Presentation GUI

    Business Logic Actual Program

    Rules

    Database Logic Interfaces to DBMS

    in Data Layer

    Presentation Logic

    Interfaces to Presentation GUI

    Business Logic Actual Program

    Rules

    Database Logic Interfaces to DBMS

    in Data Layer

    Presentation

    Application

    Data

    CLIENT SERVER

    M hinh ca 1 chng trinh ng dng

  • Cc kiu kin trc chng trnh

    Kin truc n tng:

    User Interface

    Business Rule

    Data Storage

    S dng trn 1 my tnh

    D ci t

    Nhiu nhc im

    Cn c kin trc mi Client/Server

  • Cc kiu kin trc chng trnh

    Kin truc 2 tng (2-tiered):

    Client/Server kiu Fat Client

    Client/Server kiu Fat Server

  • Cc kiu kin trc chng trnh

    51

    Kin truc a tng (n tiered):

    Thng gi l ng dng phn tn.

    Mi thnh phn c nhim v ring.

    M hnh Client/Server 3 tng

    Client

    Application Server

    Database Server

    Middleware

  • Cc kiu kin trc chng trnh

    GOLDMAN: CSIS FIG. 01-24

    Fat Client Fat Server

    TWO-TIERED ARCHITECTURE

    THREE-TIERED ARCHITECTURES

    Presentation Logic

    Database Logic

    Middleware

    CLI

    EN

    TS

    TIE

    R 1

    TIE

    R 2

    DE

    PA

    RTM

    EN

    TAL

    SE

    RV

    ER

    S

    TIE

    R 3

    SU

    PE

    R-S

    ER

    VE

    RS

    M

    AIN

    FRA

    ME

    S

    Business Logic

    Database Logic

    Business Logic

    Presentation Logic Presentation Logic

    Business Logic

    Database Logic

    So snh kin truc 2 tng v kin truc

    3 tng ca ng dng

  • 53

    Sockets cung cp mt interface lp trnh mng ti tng Transport.

    Mt socket l mt end-point ca mt lin kt gia hai ng dng mng.

    Nhiu NNLT: C, C++, Java, VB, C#, . . .

    Windows Socket Application Programming Interface (Winsock API)

    Winsock h tr xy dng cc ng dng mng trn nn TCP/IP.

    .NET h tr lp trnh mng tt nht so vi cc sn phm khc ca

    Microsoft

    => Mc tiu: nghin cu cch xy dng ng dng truyn thng

    client/server dng Sockets

    Gii thiu v Socket

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 54

    Gii thiu v Windows Socket

    Windows Sockets Application Programming Interface (WinSock API) l

    mt giao din lp trnh mng di nn tng ca Windows.

    u tin Windows Socket c pht trin cho h iu hnh Linux,

    nhng nay n c ci t trn Windows v h tr c ch iu

    khin thng ip t nhin ca Windows.

    Windows Socket pht trin qua nhiu phin bn

    Vd phin bn chy

    trn Windows XP v 2000 l 2.2

    Gii thiu v Socket

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 55

    Gii thiu v Windows Socket

    Windows Sockets cho php nhng nh sn xut cung cp mt giao

    din ng nht ngi lp trnh c th vit cc chng trnh ng

    dng theo nhng c t ca Windows Sockets v c th chy c

    trn bt k h thng no c h tr Windows Sockets.

    Cc phin bn sau ca Windows socket u tng thch vi cc phin

    bn trc ca n. iu c ngha l mt ng dng c vit cho

    phin bn trc cng hon ton c th chy c trn phin bn sau

    ca Windows Sockets.

    Windows Sockets h tr nhiu giao thc khc: IPX/SPX, Apples

    Appletalk, ATM,.

    Gii thiu v Socket

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 56

    Mt s khi nim

    Socket: Mt im giao tip u cui ca mt chng trnh trn mng.

    Mt TCP/IP Sockets c xc nh bng s kt ni ca mt a ch v

    mt s hiu cng

    a ch s xc nh my m Sockets lm vic

    Cng s xc nh chnh xc tin trnh ang thc hin Sockets trn

    my c a ch .

    Gii thiu v Socket

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 57

    Khi nim a ch v cng (Address & Port)

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 58

    Khi nim a ch v cng (Address & Port)

    Chng 1: Nhng vn c bn ca lp trnh mng

    Nguyn ly

    Trong my c rt nhiu ng dng mun trao i vi cc ng dng khc

    thng qua mng.

    V d: c 2 ng dng ca 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

    C th xy ra "nhm ln" khi d liu t my A gi n my B th trn my

    B khng bit l d liu gi cho ng dng no?

    Mi ng dng trn my B s c gn mt s hiu (cng: Port), t

    0..65535.

  • 59

    Khi nim a ch v cng (Address & Port)

    Chng 1: Nhng vn c bn ca lp trnh mng

    Cch gii quyt

    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 trng vi s hiu cng ca mnh ( c gn chnh l gi tr

    LocalPort) hay khng? Nu bng th x l, tri li th khng lm g (v

    khng phi l ca mnh).

  • 60

    Khi nim a ch v cng (Address & Port)

    Chng 1: Nhng vn c bn ca lp trnh mng

    Mt s quy nh

    Khng bao gi c 2 ng dng li cng dng 1 port

    Cc port t 0 1023 (Well-know): dng cho cc ng dng quan trng

    trn h iu hnh

    Cc port t 1024 49151 (Registered): dnh cho ngi lp trnh (khuyn

    co tun theo)

    Cc port t 49152 65535 (Dynamic): d tr

  • 61

    Giao tip s dng socket c th ch hng kt ni (giao thc TCP)

    hoc khng hng kt ni (giao thc UDP) bng cch xc nh giao thc

    ca tng vn chuyn.

    Lp trnh Socket vi C#

    Chng 1: Nhng vn c bn ca lp trnh mng

    port port

    Network driver

    Network protocol

    Transport protocol

    Network driver

    Network protocol

    Transport protocol

    Program A Program B

    Host1 Host2

    Giao tip gia hai qu trnh s dng Socket

    port port

  • 62

    Lp trnh Socket vi C#

    Chng 1: Nhng vn c bn ca lp trnh mng

    Ch c ni kt (connection):

    Tn ti knh giao tip o gia client v server.

    D liu c gi i theo ch bo m:

    Kim tra li.

    Truyn li gi tin li, mt

    Bo m th t cc gi tin

    . . .

    D liu chnh xc, Tc truyn chm.

    Ch khng ni kt

    (connectionless):

    Khng tn ti knh giao tip o gia

    client v server.

    D liu c gi i theo ch khng bo m:

    Khng kim tra li.

    Khng pht hin, khng truyn li

    gi tin li, mt.

    Khng bo m th t cc gi tin

    . . .

    D liu khng chnh xc, tc

    truyn nhanh.

    Thch hp cho cc ng dng cn tc

    , khng cn chnh xc cao: truyn

    m thanh, hnh nh . . .

  • 63

    Giao tip s dng socket c th ch hng kt ni (giao thc TCP)

    hoc khng hng kt ni (giao thc UDP) bng cch xc nh giao thc

    ca tng vn chuyn.

    Lp trnh Socket vi C#

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 64

    Cc lp trong .NET Framework c to ra cung cp mt giao din

    d dng cho cc lp trnh vin.

    Ni dung phn ny s gm:

    IP Addresses in C#

    Using C# Sockets

    Lp trnh Socket vi C#

    Chng 1: Nhng vn c bn ca lp trnh mng

  • Lp IPAddress

    Trn Internet mi mt trm (c th l my tnh, my in, thit b ) u cmt 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 vcch nhau bi du chm.

    th hin a ch ny, ngi ta c th vit di cc dng sau:

    Tn: v d nh May01, Server,

    a ch IP nhng t trong mt chui: "192.168.1.1", "127.0.0.1

    t trong mt mng 4 byte, mi byte cha mt s t 0-255.

    Hoc cng c th l mt s (long), c di 4 byte. V d, vi a ch192.168.1.2 trn th gi tr s l 33663168 (s h thp phn khi xplin 4 byte trn li vi nhau) 00000010000000011010100011000000

    13/07/2016 652 (byte 0) 1 (byte 1) 168 (byte 2) 192 (byte 3)

  • Lp IPAddress

    Nh vy, i mt a ch chun ra dng s chng 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 =

    33663168

    IPAddress c s dng biu hin mt a ch IP duy nht

    Hm to l : public IPAddress(long address)

    Tuy nhin hm to ny khng c s dng thng xuyn.

    Lp IPAddress cung cp mt s phng thc khc lm vic vi a ch

    IP

    13/07/2016 66

  • Lp IPAddress: cc thnh vin

    Tn phng thc M t

    AddressFamily

    Tr v h a ch ca a ch IP hin hnh. Nu a ch

    dng IPv4 th kt qu l Internetwork v

    InternetworkV6 nu l a ch IPv6.

    Constructor

    - IPAddress(S_Long) To a ch IP t mt s

    kiu long

    - IPAddress(Mng_Byte) To a ch IP t mt

    mng byte (4 byte).

    GetAddressBytes Chuyn a ch thnh mng byte (4 byte).

    HostToNetworkOrdero th t byte ca mt s cho ng vi th t byte

    trong a ch IPAddress.

    13/07/2016 67

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPAddress_AddressFamily.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPAddress_GetAddressBytes.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_IPAddress_HostToNetworkOrder.htm

  • Lp IPAddress: cc thnh vin

    Tn phng thc M t

    IsLoopback Cho bit a ch c phi l a ch lp hay khng?

    NetworkToHostOrdero th t byte ca mt a ch cho ng vi th t

    byte thng thng.

    ParseChuyn mt a ch IP dng chui thnh mt a ch

    IP chun (Mt i tng IPAddress)

    ToStringTr v a ch IP (mt chui) nhng dng k php

    c du chm. (V d "192.168.1.1").

    TryParse (S: String)Kim tra xem mt a ch IP ( dng chui) c phi

    ng l a ch IP hp l hay khng? True = ng

    13/07/2016 68

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPAddress_IsLoopback_1_60004a31.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_IPAddress_NetworkToHostOrder.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPAddress_Parse_1_16219e3a.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPAddress_ToString.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPAddress_TryParse_1_c5158803.htm

  • IPAddress: V d to a ch

    Cch 1: Dng hm khi to

    Byte[] b = new Byte[4];

    b[0] = 192;

    b[1] = 168;

    b[2] = 1;

    b[3] = 2;

    IPAddress Ip1 = new IPAddress(b);

    Cch 2: Dng hm khi to

    IPAddress Ip2 = new IPAddress(33663168);

    Cch 3: Dng hm khi to

    IPAddress Ip3 = IPAddress.Parse(192.168.1.2")

    Cch 4: Thng qua tnh ton

    Long So = 192* 256^0+168* 256^1+1* 256^2 + 2*256^3;

    IPAddress Ip4 = new IPAddress(So);

    13/07/2016 69

  • Lp IPAddress: cc thnh vin

    Tn thuc tnh M t

    Any

    Cung cp mt a ch IP (thng l 0.0.0.0) ch ra rng

    Server phi lng nghe cc hot ng ca Client trn tt c

    cc Card mng (s dng khi xy dng Server). Thuc tnh

    ny ch c.

    Broadcast

    Cung cp mt a ch IP qung b (Broadcast, thng l

    255.255.255.255), dng s Long. Mun ly dng chui,

    vit: Broadcast.ToString(). Thuc tnh ny ch c.

    LoopbackTr v mt a ch IP lp (IP Loopback, v d 127.0.0.1).

    Thuc tnh ny ch c.

    Address

    Mt a ch IP (An Internet Protocol (IP) address) dng s

    Long. (Mun chuyn sang dng du chm, vit :

    Address.ToString())

    13/07/2016 70

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/F_System_Net_IPAddress_Any.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/F_System_Net_IPAddress_Broadcast.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/F_System_Net_IPAddress_Loopback.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPAddress_Address.htm

  • IPAddress: V d kim tra a ch

    private void KiemTra()

    {

    IPAddress ip;

    String Ip4 = "127.0.0.1";

    String Ip5 = "999.0.0.1";

    MessageBox.Show(IPAddress.TryParse(Ip4, out ip).ToString());

    MessageBox.Show(IPAddress.TryParse(Ip5, out ip).ToString());

    }

    13/07/2016 71

  • IPAddress: V d chuyn a ch hin hnh ra mng

    void ChuyenDoi()

    {

    IPAddress Ip3 = new IPAddress(16885952);

    Byte[] b= new Byte[4];

    b = Ip3.GetAddressBytes();

    MessageBox.Show("Address: " + b[0] + "." + b[1] + "." + b[2] + "." + b[3]);

    }

    13/07/2016 72

  • Lp IPEndpoint

    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 a ch IP (IPAddress), nh vy vn cn

    thiu s hiu cng (Port number).

    .NET Framework s dng IPEndPoint biu din mt s kt hp gia

    cng v a ch IP

    Hai hm to ca lp ny l:

    IPEndPoint(long address, int port)

    IPEndPoint(IPAddress address, int port)

    Hm to th 2 c s dng ph bin hn

    13/07/2016 73

  • Lp IPEndpoint: cc thnh vin

    Tn thuc tnh M t

    Address Tr v hoc thit lp a ch IP cho endpoint. (Tr v mt i tng IPAddress)

    AddressFamily Ly v loi giao thc m Endpoint ny ang s dng.

    Port Ly v hoc thit lp s hiu cng ca endpoint.

    13/07/2016 74

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPEndPoint_Address.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPEndPoint_AddressFamily.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPEndPoint_Port.htm

  • Lp IPEndpoint: cc thnh vin

    Tn phngthc

    M t

    IPEndPoint (Int64, Int32)

    To mt i tng mi ca lp IPEndPoint, tham s truyn vo l a ch IP ( dng s) v cng s dng giao tip.

    IPEndPoint (IPAddress, Int32)

    To mt i tng mi ca lp IPEndPoint, Tham s truyn vo l mt a ch IPAddress v s hiu cng dng giao tip. (Tham kho cch to IPAddress phn trn)

    Create To mt endpoint t mt a ch socket (socket address).

    ToString Tr v a ch IP v s hiu cng theo khun dng aCh: Cng, v d: 192.168.1.1:8080

    13/07/2016 75

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/C_System_Net_IPEndPoint_ctor_1_da075419.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/C_System_Net_IPEndPoint_ctor_1_7fcfd676.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPEndPoint_Create_1_791bdf8d.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_IPEndPoint_ToString.htm

  • Lp IPEndpoint: v d khi to

    private void TaoEndpoint()

    {

    // To mt a ch IP

    IPAddress IPAdd = IPAddress.Parse("127.0.0.1");

    // Truyn vo cho hm khi to to IPEndpoint

    IPEndPoint IPep = new IPEndPoint(IPAdd, 10000);

    }

    13/07/2016 76

  • Lp IPEndpoint: v d khi to

    private void TaoEndPointBoiTenMay()

    {

    IPAddress IPAdd = new IPAddress();

    //to i tng IP t tn ca my thng qua phng thc tnhDns.GetHostAddresses ca lp DNS

    IPAdd = Dns.GetHostAddresses("Localhost")[0];

    IPEndPoint IPep = new IPEndPoint(IPAdd, 10000);

    }

    13/07/2016 77

  • Lp IPEndpoint: v d khi to

    Lu : V mt my tnh c th c nhiu card mng (Interface) do vy c

    th c nhiu hn 1 a ch IP.

    Hm GetHostAddresses s tr v cho chng ta mt mng cha tt c cc

    a ch .

    Chng ta ly ch s l 0 chn a ch ca card mng u tin.

    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

    13/07/2016 78

  • Lp IPHostEntry: cc thnh vin

    Tn thuc tnh M t

    AddressList Ly v hoc thit lp danh sch cc a ch IP lin kt vi

    mt host.

    Aliases Ly v hoc thit lp danh sch cc b danh (alias) lin kt

    vi mt host.

    HostName Ly v hoc thit lp DNS name ca host.

    13/07/2016 79

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPHostEntry_AddressList.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPHostEntry_Aliases.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/P_System_Net_IPHostEntry_HostName.htm

  • S dng C# Sockets

    13/07/2016 80

    System.Net.Sockets namespace c cha cc lp cung cp giao din lp

    trinh Net cho cc hm mc thp API winsock

    To socket

    S dng hm to ca lp Socket

    Socket(AddressFamily af, SocketType st, ProtocolType pt)

    Trong :

    An AddressFamily to define the network type:

    A SocketType to define the type of data connection

    A ProtocolType to define a specific network protocol

    Gi tr ca AddressFamily lun l InterNetwork

    Cn gi tr ca SocketType v ProtocolType phi c kt hp ung

  • S dng C# Sockets

    13/07/2016 81

    Bng kt hp

    SocketType Protocoltype Description

    Dgram Udp Connectionless communication

    Stream Tcp Connection-oriented communication

    Raw Icmp Internet Control Message Protocol

    Raw Raw Plain IP packet communication

    V d v to Socket

    Socket newsock = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

  • S dng C# Sockets

    13/07/2016 82

    Mt s thuc tnh ca lp Socket

    Property Description

    AddressFamily Gets the address family of the Socket

    Available Gets the amount of data that is ready to be read

    Blocking Gets or sets whether the Socket is in blocking mode

    Connected Gets a value that indicates if the Socket is connected to a

    remote device

    Handle Gets the operating system handle for the Socket

    LocalEndPoint Gets the local EndPoint object for the Socket

    ProtocolType Gets the protocol type of the Socket

    RemoteEndPoint Gets the remote EndPoint information for the Socket

    SocketType Gets the type of the Socket

  • DNS (Domain Name Service)

    13/07/2016 83

    DNS (Domain Name Service) l mt lp giup chung ta trong vic phn gii

    tn min (Domain Resolution) n gin.

    Phn gii tn min tc l: u vo l tn ca my trm thi u ra s cho

    ta a ch IP tng ng ca my , v d: ServerCNTT 192.168.3.8

    Ngoi ra lp Dns cn c rt nhiu phng thc cho chung ta thm thng

    tin v my cc b nh tn, a ch, v.v.

    System.Net namespace c cha lp Dns trong c cha tt c cc hm

    cn thit khi ta lm vic vi h thng tn min.

    Trong cc phng thc ny c

    Cc phng thc ng b

    Cc phng thc khng ng b

  • Lp DNS: cc thnh vin

    Tn phng thc M t

    GetHostByAddress

    (String IP)

    GetHostByAddress

    (IPAddress IP)

    Tr v thng tin (IPHostEntry) ca trm c a

    ch IP c truyn vo.

    Thay bng GetHostEntry()

    GetHostByName

    (String hostname)

    Tr v thng tin (IPHostEntry) DNS ca mt

    trm b loi b. Thay bng

    GetHostEntry()

    HostName Cho ta bit tn ca my va c phn gii.

    Nu khng phn gii c th c gi tr l a

    ch IP.

    13/07/2016 84

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_Dns_GetHostByAddress.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_Dns_GetHostByAddress.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_Dns_GetHostByName_1_16219e3a.htm

  • Lp DNS: cc thnh vin

    Tn phng thc M t

    GetHostAddresses (String

    IP_Or_HostName)

    Tr v tt c cc a ch IP ca mt trm. Kiu

    IPAddress

    GetHostEntry (String

    IP_Or_HostName)

    GetHostEntry (IPAddress IP)

    Gii p tn hoc a ch IP truyn vo v tr

    v mt i tng IPHostEntry tng ng.

    GetHostName Ly v tn ca my tnh cc b (String).

    Resolve (String Hostname) Chuyn tn ca my hoc a ch IP thnh

    IPHostEntry tng ng.

    b b, thay bng GetHostEntry()

    13/07/2016 85

    Lu : y l cc phng thc tnh, do vy khi gi thi gi trc tip t tn lp m khng cn phi khai bo mt i tng mi ca lp ny.

    V d: Dns.Resolve, Dns.GetHostname, Dns.GetHostEntry, v.v

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_Dns_GetHostAddresses_1_16219e3a.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_Dns_GetHostEntry.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/O_T_System_Net_Dns_GetHostEntry.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_Dns_GetHostName.htmms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref10/html/M_System_Net_Dns_Resolve_1_16219e3a.htm

  • Lp DNS: v d 1

    13/07/2016 86

    private void ShowIPs()

    {

    // Ly tt c a ch IP ca my

    IPAddress[] add = Dns.GetHostAddresses("PC");

    foreach (IPAddress ip in add) {

    MessageBox.Show(ip.ToString());

    }

    //Cch 2

    //for (int i = 0; i < add.Length; i++)

    //{

    // MessageBox.Show(add[i].ToString());

    //}

    }

  • Lp DNS: v d 2

    13/07/2016 87

    private void CreatIPHostEntry() {

    IPHostEntry iphe1, iphe2, iphe3;

    IPAddress ipadd = IPAddress.Parse("127.0.0.1");

    iphe1 = Dns.GetHostEntry("Notebook");

    iphe2 = Dns.GetHostEntry("127.0.0.1");

    iphe3 = Dns.GetHostEntry(ipadd);

    MessageBox.Show(iphe1.HostName); MessageBox.Show(iphe2.HostName) ;

    MessageBox.Show(iphe3.HostName) ;

    }

  • 88

    C bn v mng my tnh

    M hinh truyn thng

    Cc m hinh tham chiu

    Tng quan v lp trinh mng

    TM LC BI HC

    Chng 1: Nhng vn c bn ca lp trnh mng

  • 89Chng 1: Nhng vn c bn ca lp trnh mng