Công ty Tcx mu嘘n phát tri吋n m瓜t 泳ng d映ng web và mu嘘n s穎 d映ng c挨 s荏 f英 li羽u c栄a riêng mình. Tcx 8ã d詠a trên ti院p c壱n l壱p trình API c栄a mSQL và ngôn ng英 SQL 8吋 phát tri吋n nên MySQL
MySQL ho衣t 8瓜ng theo mô hình client-server, r医t 8挨n gi違n, không có các tính n<ng cao c医p nh逢 qu違n lý giao tác, chia s飲 k院t n嘘i. A逢嬰c s穎 d映ng r瓜ng rãi trong Linux 8嘘i v噂i các 泳ng d映ng cgi hay Perl trong môi tr逢運ng Web, Internet.
A鵜a ch雨 download MySQL :http://www.MySQL.com 3.2. Cài 8員t MySQL
3.2.1. Cài A員t MySQL t瑛 các gói nh鵜 phân
Các gói c亥n thi院t:
• Gói trình ch栄 (server package):
MySQL-version-architecture.rpm
• Gói trình khách (client package):
MySQL-client-version-architecture.rpm
• J厩 tr嬰 th逢 vi羽n cho trình khách:
MySQL-shared-version-architecture.rpm
• Gói phát tri吋n 泳ng d映ng trên MySQL:
MySQL-devel-version-architecture.rpm
Ta cài t瑛ng gói b茨ng l羽nh rpm –ivh <tên gói>
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL Trình cài 8員t script s胤 t詠"8瓜ng t衣o:
• O瓜t CSDL database m磯u
• Script init.d và mysql 8吋 kh荏i 8瓜ng và d瑛ng d鵜ch v映
ki吋m soát database c栄a MySQL.
• Script mysql ch泳a các khai báo bi院n môi tr逢運ng cho CSDL cho bi院t v鵜 trí các file CSDL c栄a MySQL:
bindir=/usr/bin
datadir=/var/lib/mysql
pid_file=/var/lib/mysql/mysqld.pid
mysql_daemon_user=mysql # Run mysql as this user
• User mang tên mysql dùng 8吋"8<ng nh壱p và kh荏i 8瓜ng d鵜ch
x映 daemon c栄a trình ch栄. Kh荏i 8瓜ng trình ch栄 b茨ng tay:
• A<ng nh壱p quy隠n user mysql: $ su mysql • Kh荏i 8瓜ng trình ch栄: # /etc/rc.d/init.d/mysql start 3.2.2. Cài 8員t t瑛 mã ngu欝n • Gk違i nén file ch泳a mã ngu欝n • Th詠c hi羽n cài 8員t b茨ng t鰻 h嬰p l羽nh sau : $ ./configure $ make $ su $ make intall $scripts/mysql_intal.db
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL 3.3. S穎 d映ng MySQL 3.3.1. L羽nh mysql Aây là l羽nh thâm nh壱p trình qu違n lý c挨 s荏 d英 li羽u và 8逢a ra các n羽nh qu違n tr鵜 khác . Cú pháp
mysql Îu username Îp password databasename
Ví d映
Truy xu医t c挨 s荏 d英 li羽u packet voi username la “pac” va password la “ket”.
$ mysql –I pac –p ket packet
3.3.2. L羽nh mysqladmin
Là công c映 chính c栄a ng逢運i qu違n tr鵜 c挨 s荏 d英 li羽u v噂i 2 tham s嘘 -u,- p . V噂imysqladmin có m瓜t s嘘 l羽nh qu違n tr鵜 sau
• create databasename : t衣o csdl
• drop database name :xóa c挨 s荏 d英 li羽u
• password newpassword : 8鰻i m壱t kh育u
• status: thông tin v隠 tr衣ng thái hi羽n hành c栄a trình ch栄
• version cho bi院t thông tin v隠 phiên b違n c栄a trình ch栄 my sql
3.3.3. L羽nh mysqlshow
L羽nh này cho bi院t thông tin v隠 database. N院u không có tham s嘘 s胤
hi吋n th鵜 toàn b瓜 database, ng逢嬰c n衣i n院u có tham s嘘 là tên database thì hi吋n th鵜 t医t c違 các b違ng trong database.
P院u tham s嘘 là tên database và tên b違ng thì toàn b瓜 tên các c瓜t trong b違ng s胤"8逢嬰c hi吋n th鵜
P院u tham s嘘 là tên database,tên b違ng,tên c瓜t thì thông tin c栄a c瓜t s胤 8逢嬰c li羽t kê.
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL
3.3.4. L羽nh grant
E医p quy隠n cho ng逢運i dùng database Cú pháp :
grant privilege on object to user[user-password] [opt]
• privilege là quy隠n c医p cho tài kho違n ng逢運i dùng bao g欝m: § Alter : quy隠n thay 8鰻i b違ng và file ch雨 m映c
§ Creat : quy隠n t衣o b違ng vàdatabase § Delete : quy隠n xoá d英 li羽u trong database § Drop : quy隠n xoá database
§ Index : quy隠n qu違n lý ch雨 m映c index § Insert : quy隠n chèn d英 li羽u m噂i vào § Select : quy隠n xem d英 li羽u
§ Update : quy隠n c壱p nh壱t d英 li羽u § All : t医t c違 các quy隠n
• Object : databasename.table
Có th吋 dùng databasename.* s胤 tác 8瓜ng 8院n m丑i b違ng trên databasename.
N逢u ý: mysql cho phép c医p quy隠n trên database ch逢a có cho m瓜t ng逢運i dùng sau này s胤 t衣o
• User : username.host Ví d映rick@”%”
• Password : n院u grant ta丑 m噂i user ta 8員t password b茨ng cách thêm identyfied by password
• Ví d映 : t衣o m噂i user khtn v噂i password cntt toàn quy隠n trên database tên packet(packet có th吋 ch逢a có)
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL
3.3.5. L羽nh Revoke
L羽nh này dùng8吋 v逢噂c quy隠n ng逢運i dùng Cú pháp:
revoke privilege on object from user
3.3.6. Ví d映 v隠 t衣o m瓜t c挨 s荏 d英 li羽u
V衣o c挨 s荏 d英 li羽u packet v噂i username là khtn và password la cntt :
$mysql>grant all on packet.* to khtn@Ñ'Ñ identified by cntt;
N羽nh trên 8逢嬰c th詠c hi羽n v噂i t逢 cách qu違n tr鵜 root c栄a MySQL. (Thoát v隠d医u nh逸c l羽nh $mysql>quit )
R欝i gõ ti院p các l羽nh sau:
$mysql Îu khtn Îp cntt
$ mysql>create database packet;
$mysql>use packet (s穎 d映ng database tên packet) Bây gi運 m丑i truy v医n sql 8隠u lác 8瓜ng lên database packet. 3.4. L壱p trình MySQL trên ngôn ng英 C
M瓜t s嘘 hàm th逢運ng dùng khi l壱p trình v噂i MySQL
4.4.1 mysql_init
Kh荏i t衣o c医u trúc x穎 lý k院t n嘘i Cú pháp :
MYSQL *mysql_init (MYSQL *old_connect)
Tham s嘘:
• old_connect =NULL :t衣o k院t n嘘i m噂i
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL
3.4.2 mysql_real_connection
Th詠c hi羽n k院t n嘘i v壱t lý 8院n máy ch栄 n挨i Mysql sever 8ang ch衣y Cú pháp :
MYSQL *mysql_real_connect(MYSQL *connection , const char* server_host, const char * sql_username, const char *sql_pass, const char* db_name,
unsigned port_num ,const char * unit_socket_name , unsigned int flag )
Tham s嘘:
• Connection : tr臼"8院n c医u trúc MYSQL 8逢嬰c kh荏i t衣o b荏i hàm mysqlconnect.
• Server_host : 8鵜a ch雨 IP c栄a máy ch栄 n挨i d鵜ch vu mysql server 8ang ch衣y.
• sql_username,sql_pass : là 8嘘i s嘘 ch泳ng th詠c quy隠n 8<ng nh壱p h羽 th嘘ng
• db_name: tên c栄a database
• port_num : s嘘 hi羽u c鰻ng mysql dùng (m員c 8鵜nh b茨ng 0)
• unit_socket_name ki吋u socket (m員c 8鵜nh NULL)
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL
3.4.3 mysql_query
Th詠c thi câu l羽nh sql query. Cú pháp:
int mysql_query(MYSQL *connect,const char* query)
Tham s嘘: • query : câu l羽nh sql c亥n th詠c hi羽n K院t qu違 tr違v隠 • B茨ng 0 n院u th詠c thi thành công • B茨ng 1 n院u th医t b衣i 3.4.4. mysql_affected_rows
Cho bi院t s嘘 dòng b鵜"違nh h逢荏ng sau l羽nh query Cú pháp :
my_ulonglong mysql_affected_rows(MYSQL *connection)
Khi s穎 d映ng hàm này ph違i ép ki吋u giá tr鵜 tr違 v隠 là unsigned long
3.4.5. mysql_store_result
N医y giá tr鵜 tr違 v隠 sau khi g丑i hàm mysql_query 8逢a vào c医u trúc MYSQL_RES
Cú pháp :
MYSQL_RES *mysql_store_result(MYSQL -*connection)
3.4.6. mysql_fetch_row
N医y ra m瓜t dònh d英 li羽u t瑛 MYSQL_RES . B衣n c ng có th吋 di chuy吋n 8院n 1 dòng d英 li羽u b医t kì nh運 hai hàm mysql_row_seek và mysql_row_tell.
Cú pháp :
Ch逢挨ng 3: H羽 qu違n tr鵜 c挨 s穎 d英 li羽u MySQL
3.4.7. mysql_row_seek
Di chuy吋n 8院n v鵜 trí offset và tr違 v隠 v鵜 trí con tr臼 tr逢噂c 8ó Cú pháp :
MYSQL_ROW_OFFSET myql_row_seek(
MYSQL_RES *result MYSQL_ROW_OFFSET offset)
3.4.8. mysql_free_result
Gi違i phóng tài nguyên. Cú pháp:
Ch逢挨ng 4: L壱p trình socket
Ch逢挨ng 4: L壱p trình socket
4.1. Gi噂i thi羽u v隠l壱p trình socket
Khi vi院t 泳ng f映ng và có nhu c亥u t逢挨ng tác v噂i m瓜t 泳ng f映ng khác, chúng ta th逢運ng d詠a vào mô hình khách/ ch栄 (client/server). Theo mô hình này, 泳ngf映ng có kh違 p<ng ph映c x映ho員c cung c医p nh英ng thông tin gì 8ó g丑i là 泳ng f映ng ch栄 (trình ch栄 hay server). 永ng f映ng g穎i yêu c亥u 8院n trình ch栄 8逢嬰ci丑i là 泳ngf映ng khách (trình khách hay client). M荏 r瓜ng h挨n n英a, server có th吋 là m瓜t máy tính v噂i c医u hìnho衣nh còn client là r医t nhi隠u máy con khác n嘘i vào máy ch栄.
Nh逢 v壱y, tr逢噂c khi yêu c亥u m瓜t f鵜ch x映 c栄a trình ch栄 th詠c hi羽n 8i隠u gì
8ó, trình khách (client) ph違i có kh違 p<ng k院t n嘘i 8逢嬰c v噂i trình ch栄. Quá trình k院t n嘘i này 8逢嬰c th詠c hi羽n thông qua m瓜t c挨 ch院tr瑛u t逢嬰ng hóai丑i là socket (v衣m f鵜ch là “c挨 ch院"鰻 c逸m”). K院t n嘘i gi英a trình khách và trình ch栄 v逢挨ng t詠
nh逢 vi羽c c逸m phích 8i羽n vào 鰻 c逸m 8i羽n. Trình khách th逢運ng 8逢嬰c coi nh逢
phích c逸m 8i羽n, còn trình ch栄 8逢嬰c coi nh逢 鰻 c逸m 8i羽n, m瓜t鰻c逸m có th吋c逸m vào 8ó nhi隠u phích 8i羽n khác nhau e ng nh逢 m瓜t máy ch栄 có th吋 k院t n嘘i và ph映cx映cho r医t nhi隠u máy khách.
N院u k院t n嘘i thành công thì trình khách và trình ch栄 có th吋 trao 8鰻i d英
li羽u v噂i nhau, th詠c hi羽n các yêu c亥u v隠trao 8鰻i d英li羽u. 4.2. Nguyên lý ho衣t 8瓜nge栄a socket
A亥u tiên server m荏 m瓜t 鰻 c逸m socket. Aây ch雨 là quá trình h羽 8i隠u hành phân b鰻 tài nguyên 8吋 chu育n d鵜 k院t n嘘i. Dùng hàm socket() 8吋 t衣o “鰻 c逸m” cho trình ch栄server.
Ti院p 8院n, 8吋"泳ng f映ng khách bi院t 8院n 鰻 c逸m socket e栄a trình ch栄, d衣n ph違i 8員t cho server ch栄 m瓜t cái tên. N院u trên máye映c b瓜 và d詠a vào h羽th嘘ng file e栄a UNIX hay Linux, d衣n có th吋 8員t tên cho socket nh逢 là m瓜t tên file
Ch逢挨ng 4: L壱p trình socket
(v噂i 8亥y 8栄 8逢運ng d磯n). D衣n ch雨 c亥n 8員t tên còn 8逢運ng d磯n th逢運ng 8員t trong th逢 o映c /tmp hay /usr/tmp. A嘘i v噂i giao ti院p o衣ng thông qua giao th泳c TCP/IP têne栄a socket 8逢嬰c thay th院b茨ng khái ni羽m c鰻ng (port). C鰻ng là m瓜t s嘘 nguyên 2 bytes (kho違ng 65000 c鰻ngd衣n có th吋 ch丑n 8員t cho socket) thay th院 cho tên t壱p tin. N院u trình khách và trình ch栄 n茨m trên hai máy khách nhau, giao th泳c TCP/IP còn yêu c亥u xác 8鵜nh thêm 8鵜a ch雨 IP 8吋 k院t n嘘i 8院n máy ch栄"荏xa.
Sau khi 8ã ch雨 8鵜nh tên ho員c s嘘hi羽u port cho socket,d衣n i丑i hàm bind()
8吋 ràng bu瓜c hay 8員t tên chính th泳c cho sockete栄a trình ch栄. Ti院p8院n là ch運
k院t n嘘i t瑛 phía trình khách, trình ch栄 s胤 g丑i hàm listen() 8吋 t衣o hàng 8嬰i nh壱n các k院t n嘘i do trình khách 8逢a 8院n. N院u có yêu c亥u k院t n嘘i t瑛 phía trình khách, trình ch栄 g丑i hàm accept() 8吋 ti院p nh壱n yêu c亥u e栄a trình khách. accept() u胤 t衣o m瓜t socket vô danh khác (unnamed socket), c逸m k院t n嘘i e栄a trình khách vào socket vô danh này và th詠c hi羽n quá trình chuy吋n d英 li羽u trao
8鰻i gi英a khách ch栄. Socket 8逢嬰c 8員t tên tr逢噂c 8ó v磯n ti院p v映c ho衣t 8瓜ng 8吋
ch運nh壱n yêu c亥u t瑛 trình khách khác.
O丑i giao ti院p 8丑c ghi thông qua socket e ng 8挨n gi違n nh逢 vi羽c dùng l羽nh read/write8吋 8丑c ghi trên file. N院u file d詠a vào s嘘mô v違(file descriptor)
8吋 xác 8鵜nh socket c亥n 8丑c ghi cho hàm read/write.
Phía trình khách ch雨 c亥m v衣o m瓜t socket vô danh, ch雨 8鵜nh tên và v鵜 trí socket e栄a trình ch栄. Yêu c亥u k院t n嘘i b茨ng hàm connect() và 8丑c ghi, truy xu医t d英li羽ue栄a socket b茨ng l羽nh read/ write ho員c l羽nh send/ recv.
Ch逢挨ng 4: L壱p trình socket 4.3. L壱p trình v噂i socket
4.3.1. Các thu瓜c tínhe栄a socket
Socket 8逢嬰c 8鵜nh ngh a d詠a trên 3 thành ph亥n thu瓜c tính( attribute)
8ó là: vùng( domain), ki吋u( type) và giao th泳c( protocol). Socket còn c<n c泳 vào m瓜t 8鵜a ch雨 k院t h嬰p v噂i nó. A鵜a ch雨 này ph映thu瓜c vào vùng e栄a socket và th逢運ng 8逢嬰c i丑i là dòng giao th泳c (protocol family). Ví d映
nh逢 dòng giao th泳c theo h羽 th嘘ng file e栄a Sun th逢運ng l医y tên file làm
8逢運ng d磯n 8鵜a ch雨, trong khi giao th泳c TCP/IPn衣i l医y 8鵜a ch雨 IP (32 bits)
8吋tham chi院u và th詠c hi羽n k院t n嘘i v壱t lý.
4.3.1.1. Vùng( domain)
Vùng dùng xác 8鵜nh j衣 t亥ng o衣ng n挨i giao ti院p e栄a Socket di宇n ra. Vùng giao ti院p Socket thông f映ng nh医t hi羽n nay là AF_INET hay gia ti院p socket theo chu育no衣ng Internet. Chu育n này s穎 d映ng 8鵜a ch雨 IP 8吋 xác 8鵜nh nút k院t n嘘i v壱t lý trên o衣ng. Ngoài ra, n院ud衣n ch雨 c亥n giao ti院pe映c b瓜, d衣n có th吋 dùng vùng giao ti院p theo chu育n e栄a Sun AF_UNIX, 8ó là dùng 8逢運ng d磯n và h羽 th嘘ng file 8吋 8員t tên và xác 8鵜nh k院t n嘘i gi英a hai hay nhi隠u 泳ng f映ng. Ch鰯ng j衣n nh逢 ví d映 trên, chúng ta 8ã th詠c hi羽n b茨ng cách 8員t tên cho socket là server_socket, và Linux 8ã t衣o ra file server_socket ngay trên th逢 o映c hi羽n hành (hay trong th逢 o映cv衣m /tmp tùy theo phiên d違n e栄a Linux và UNIX). Tuy nhiên vùng giao ti院p AF_UNIX l衣i ít 8逢嬰c s穎 d映ng trong th詠c t院. Ngày nay h亥u h院t các
泳ngf映ngo衣ng s穎 d映ng socket8隠u theo vùng AF_INET là ch栄y院u. Chúng tau胤 bàn sâu v隠phân vùng này ngay sau 8ây.
Vùng AF_INET nh逢" 8ã nêu s穎 d映ng 8鵜c ch雨 IP (Internet Protocol) là m瓜t ch栄 ngh a s嘘 32 bits8吋 xác 8鵜nh k院t n嘘i v壱t lý. S嘘
Ch逢挨ng 4: L壱p trình socket
hay 127.0.0.1 là các 8鵜a ch雨 IP h嬰p l羽. A鵜a ch雨IP có th吋 8逢嬰c ánh z衣
thành m瓜t tên d宇 nh噂 j挨n nh逢 www.yahoo.com hay www.microsoft.com, chúng 8逢嬰c i丑i là tên vùng (domain name). Vi羽c ánh z衣 8鵜a ch雨 IP thành tên vùng th逢運ng do máy ch栄 DNS (Domain Name Server) th詠c hi羽n. Tuy nhiên, d衣n e ng có th吋 t詠
ánhz衣tên vùng ngay trên mày e映c b瓜b茨ng cách s穎 d映ng t壱p tin d英
li羽u /etc/hosts.
Socket theo dòng giao th泳c IP s穎 d映ng port (s嘘 hi羽u c鰻ng) 8吋 8員t tên cho m瓜t socket. C鰻ng dùng 8吋 phân bi羽t d英 li羽u g穎i 8院nu胤
chuy吋n cho 泳ng f映ng nào. D衣n hình dung n院u 8鵜a ch雨 IP dùng 8吋
xác 8鵜nh 8逢嬰c máy hay n挨i k院t n嘘i v壱t lý 8吋 8逢a d英 li羽u 8院n thì c鰻ng là 8鵜a ch雨 ph映 dùng 8吋g穎i chính xác d英li羽u8院n n挨i 泳ngf映ng c亥n. Ai隠u này do trên m瓜t máy có th吋 có nhi隠u泳ngf映ng cùng ch衣y và cùng s穎 d映ng trùng s嘘 c鰻ng. Do c鰻ng là m瓜t giá tr鵜 nguyên 2 bytes nân d衣n có th吋 s穎 d映ng kho違ng 65000 c鰻ng 8吋 t詠 do 8員t cho socket. Tr瑛 các s嘘 hi羽u c鰻ng n鰻 ti院ng nh逢 FTP, Web 8ã nêu荏 ph亥n trên d衣n không nên s穎 d映ng, còn thì b衣n có th吋 ch丑n s嘘 c鰻ng l噂n
j挨n 1024"8吋m荏cho sockete栄a泳ung f映ng.
M荏 socket theo AF_INET không khác m医y so v噂i AF_UNIX ngoài vi羽c 8員t tên và ch雨 8鵜nh s嘘hi羽u c鰻ng. Ví d映:
/* Mぞsocket theo kxt nぐi IP */
server_sockfd = socket (AF_INET, SOCK_STREAM, 0); server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr(“127.0.0.1”); server_address.sin_port = 1234;
Ch逢挨ng 4: L壱p trình socket
Ngoài vùng giao ti院p AF_UNIX và AF_INET, d衣n còn có th吋
g員p AF_ISO dành cho chu育n giao th泳c o衣ng theo ISO hay AF_NS dành cho h羽 th嘘ng o衣ng Xerox, tuy nhiên chúng không 8逢嬰c s穎 f映ng th逢運ng xuyên, cho nên tau胤 không8隠c壱p 8院n chi ti院t.
5.3.1.2. Ki吋u socket(type)
V噂i m厩i vùng domain e栄a socket, d衣n có th吋 có nhi隠u cách giao ti院p. Có hai ki吋u giao ti院p ki吋u giao ti院p 8i吋n hình 8s là giao ti院p m瓜t chi隠u (SOCK_DGRAM) và giao ti院p d違o 8違m hai chi隠u (SOCK_STREAM). D英 li羽u khi chuy吋n 8i 8逢嬰c 8óng thành t瑛ng gói (data package hay datagram). SOCK_STREAM và SOCK_DGRAM qui 8鵜nh cách chuy吋n gói d英 li羽u theo hai cách nh逢 sau:
SOCK_STREAM luôn gi英 k院t n嘘i và b違o 8違m gói thông tin g穎i 8i 8逢嬰c chuy吋n8院n 8ích và nh壱n 8亥y 8栄. Sau khi nh壱n xong d英
li羽u, n挨i nh壱n u胤g穎i thông tin ph違n h欝i cho n挨i g穎i và quá trình g穎i ch雨 8逢嬰c xác nh壱n hoàn t医t khi nh壱n 8逢嬰c 8亥y 8栄th欝ng tin g穎i nh壱n
荏 c違 hai phía khách ch栄. Ki吋u truy隠n d英 li羽 socket này trong vùng giao th泳c o衣ng Internet AF_INET 8逢嬰c i丑 là giao th泳c truy隠n TCP. Khi k院t h嬰p v噂i c挨 ch院 8鵜nh tuy院n theo 8鵜a ch雨 IP chúng 8逢嬰c
i丑i t逸t là TCP/IP. K院t n嘘i và truy隠n d英 li羽u theo cách này tuy d違o
8違m nh逢ng t嘘n nhi隠u tài nguyên e栄a h羽 th嘘ng do k院t n嘘i ph違i duy trì và theo dõi th逢運ng xuyên.
SOCK_DGRAM cách g穎i nh衣n d英 li羽u này ch雨 di宇n ra m瓜t chi隠u. Trình khách, n挨i g穎i d英 li羽u 8i không c亥n bi院t trình ch雨 (n挨i nh壱n) có nh壱n 8逢嬰c gói d英 li羽u 8亥y 8栄 hay không. Trình ch栄 khi nh壱n 8逢嬰c d英li羽ue ng không c亥n thông báo hay xác nh壱n v噂i trình khách là d英 li羽u 8ã nh壱n xong. Cách g穎i này có v飲 không an toàn
Ch逢挨ng 4: L壱p trình socket
nh逢ng bù l衣i th詠c hi羽n nhanh và không tiêu t嘘n nhi隠u tài nguyên 8吋
duy trì k院t n嘘i và ki吋m tra d英 li羽u nh壱n g穎i. Ki吋u truy隠n d英 li羽u socket này trong vùng giao th泳c o衣ng Internet AF_INET 8逢嬰c i丑i là giao th泳c truy隠n UDP (User Datagram Protocol). Khi k院t h嬰p v噂i
e挨 ch院 8鵜nh tuy院n theo 8鵜c ch雨 IP chúng 8逢嬰ci丑i t逸t là UDP/IP. Do tính ch医t không 8違m d違o nên UDP 8逢嬰c dùng nhi隠u trongo衣ng v噂i
o映c 8ích thông báo hay g穎i tin tin 8院n m瓜t nhóm máy tính nào 8ó trong o衣ng. Nó ít khi 8逢嬰c dùng trong các f鵜chx映c亥n s詠 chính xác cao nh逢 g穎i nh壱n file hay k院t nói c挨 s荏 d英li羽u.
4.3.1.3. Giao th泳ce栄a socket( protocol)
Giao th泳c là cách qui逢噂c g穎i nh壱n d英li羽u gii英a hai hay nhi隠u máy tính trong m衣ng. Tùy theo m厩i ki吋u g穎i nh壱n d英 li羽u mà ta có các giao th泳c khác nhau. Hi羽n nay ki吋u g穎i nh壱n theo giao th泳c TCP và UDP là s穎 d映ng nhi隠u nh医t. Tuy nhiên 8i隠u này không b逸t bu瓜c, TCP và UDP ch雨 là cách cài 8員t cho vùng socket AF_INET