
Ngân hàng câu h i thi L p Trình M ngỏ ậ ạ
1. Th vi n liên k t đ ng c a Windows Socket có tên là:ư ệ ế ộ ủ
a. WinSock.DLL
b. WinSock2.DLL
c. WS2.DLL
d. WS2_32.DLL
2. Đ có th s d ng th vi n Windows Socket, t p tiêu đ c n khai báo là:ể ể ử ụ ư ệ ệ ề ầ
a. Winsock.h
b. Winsock2.h
c. Ws2_32.h
d. Ws2.h
3. Đ có th s d ng d ng th vi n Windows Socket, t p th vi n c n khai báo cho quá trình liên k t là.ể ể ử ụ ụ ư ệ ệ ư ệ ầ ế
a. Winsock.lib
b. WS2_32.LIB
c. WS2_32.DLL
d. Winsock2.dll
4. Công c chu n đoán m ng dùng đ hi n th các k t n i hi n có trên máy tính làụ ẩ ạ ể ể ị ế ố ệ
a. Wireshark
b. TCPView
c. Netcat
d. T t c các công c trênấ ả ụ
5. Công c dùng đ theo dõi tài nguyên s d ng c a máy tính trên h đi u hành Windows làụ ể ử ụ ủ ệ ề
a. Task Manager
b. Resource Monitor
c. Wireshark
d. Ph ng án a và b.ươ
6. Công c dùng đ b t các gói tin g i ra và vào m t giao di n m ng c a máy tính làụ ể ắ ử ộ ệ ạ ủ
a. Netcat
b. Network Monitor
c. Cain
d. Không ph ng án nào đúng.ươ
7. Công c đa năng, v a có th đóng vai trò client, v a server, ch y trên giao th c TCP, UDP là.ụ ừ ể ừ ạ ứ
a. Netcat
b. TCPDump
c. Netstat
d. Network Monitor
8. N u c n ph i vi t m t ng d ng c n tính đáp ng nhanh và ch p nh n sai sót. Giao th c l a ch n sẽ làế ầ ả ế ộ ứ ụ ầ ứ ấ ậ ứ ự ọ
a. TCP
b. IP
c. ICMP
d. UDP
9. D ch v phân gi i tên mi n ch y t ng nào trong các t ng sau đâyị ụ ả ề ạ ở ầ ầ
a. Application
b. Transport
c. Internetwork
d. Datalink
10. Giao th c nào đ c s d ng đ chia s m t đ a ch toàn c c cho m t nhóm các máy tính trong m ng LAN.ứ ượ ử ụ ể ẻ ộ ị ỉ ụ ộ ạ
a. VLAN
b. MAC
c. NAT
d. Không đáp án nào đúng
11. Trong m t m ng máy tính đ c chia s chung m t đ a ch IP toàn c c. Thi t l p nào sau đây sẽ cho phép m t máy tính ộ ạ ượ ẻ ộ ị ỉ ụ ế ậ ộ
t Internet ch đ ng k t n i đ n m t máy ch trong m ng.ừ ủ ộ ế ố ế ộ ủ ạ
a. DMZ
b. Virtual Server
c. Port Forwarding
d. C ba ph ng án trên.ả ươ
12. Công c nào s d ng đ ki m tra ho t đ ng c a m t máy ch phân gi i tên mi nụ ử ụ ể ể ạ ộ ủ ộ ủ ả ề
a. Ping
b. Nslookup
c. Netstat
d. Ipconfig
13. N u c n phát tri n thêm trình đi u khi n cho m t lo i thi t b m i. ng d ng sẽ ph i vi t t ng nào c a Windows ế ầ ể ề ể ộ ạ ế ị ớ Ứ ụ ả ế ở ầ ủ
Socket
a. Application
b. Provider
c. Transport Protocol
d. Không t ng nào đúngầ
14. N u c n ph i thi t k m t giao th c m i, ng d ng sẽ ph i tích h p vào t ng nào c a Windows Socket APIế ầ ả ế ế ộ ứ ớ ứ ụ ả ợ ầ ủ
a. Application b. Provider

c. Transport Protocol d. Không t ng nào đúng.ầ
15. Trình đi u khi n cho m t thi t b m ng ch y ch đề ể ộ ế ị ạ ạ ở ế ộ
a. User Mode
b. Kernel Mode
c. System Mode
d. Không ph ng án nào đúng.ươ
16. Biên c a thông đi p trong các giao th c h ng dòng có đ c b o toàn hay không ?ủ ệ ứ ướ ượ ả
a. Có
b. Không
c. Tùy t ng tr ng h p, n u đ c t ch c ừ ườ ợ ế ượ ổ ứ
h p lý.ợ
17. Hàm nào sau đây th c hi n công vi c kh i t o Windows Socketự ệ ệ ở ạ
a. WSStartup
b. WinsockStartup
c. SocketStartup
d. WSAStartup
18. WSADATA là c u trúc dùng đấ ể
a. Truy n thông tin v phiên b n WinSock ề ề ả
mà ng d ng mu n kh i t oứ ụ ố ở ạ
b. Nh n thông tin v phiên b n WinSock có ậ ề ả
trên h th ng.ệ ố
c. C hai đáp án đ u sai.ả ề
19. Hàm nào sau đây s d ng đ gi i phóng Windows Socket API.ử ụ ể ả
a. WSACleanup
b. WSCleanup
c. Cleanup
d. Ph ng án khác:…ươ
20. Đ l y mã l i c a thao tác ngay tr c đó. Hàm nào sau đây sẽ đ c s d ngể ấ ỗ ủ ướ ượ ử ụ
a. GetLastError
b. WSAGetError
c. WSAGetLastError
d. WSALastError
21. Đo n ch ng trình sau th c hi n k t n i đ n m t server, đi n vào v trí <A>, <B>, <C> các l nh còn thi u.ạ ươ ự ệ ế ố ế ộ ề ị ệ ế
ret = connect(s, (sockaddr*)&serverAddr,sizeof(serverAddr));
if (ret ==SOCKET_ERROR) {
printf(“Loi ket noi: %d”, <A>);
<B>;
<C>;
};
a. <A>: GetLastError, <B>: closesocket (s),
<C>: WSACleanup().
b. <A>: WSAGetLastError(), <B> close(s),
<C>: Cleanup().
c. <A>: WSALastError(), <B>:
closesocket(s), <C>: đ tr ng.ể ố
d. Không ph ng án nào đúng.ươ
22. Trong Windows Socket, v i các hàm không có ti n t WSA thì mã l i tr v là 0 có nghĩa là:ớ ề ố ỗ ả ề
a. Thành công
b. Th t b iấ ạ
c. Tùy tr ng h pườ ợ
23. L nh nào sau đây dùng đ t o m t socket TCPệ ể ạ ộ
a. socket(AF_INET,SOCK_STREAM,IPPROTO_
TCP).
b. socket(AF_INET,SOCK_DGRAM,IPROTO_T
CP).
c. Socket(AF_INET,SOCK_STREAM,IPPROTO_
UDP).
d. socket(AF_INET,SOCKSTREAM,IPPROTOT
CP).
24. L nh nào sau đây dùng đ t o m t socket UDPệ ể ạ ộ
a. socket(AF_INET,SOCK_UDP,
IPPROTO_TCP).
b. socket(AF_INET,SOCK_DGRAM,IPROTO_T
CP).
c. Socket(AF_INET,SOCK_STREAM,IPPROTO_
UDP).
d. Không l nh nào đúng.ệ
25. C u trúc nào đ c s d ng đ khai báo đ a ch socket internet:ấ ượ ử ụ ể ị ỉ
a. sock_addr
b. sockaddr
c. sockaddr_in
d. sock_addr_in
26. Các giá tr l n h n 01 byte trong c u trúc l u tr đ a ch c a socket đ c t ch c theo ki u:ị ớ ơ ấ ư ữ ị ỉ ủ ượ ổ ứ ể

a. Đ u toầ
b. Đ u nhầ ỏ
c. Tùy tr ng h pườ ợ
27. Đ chuy n đ i m t xâu sang đ a ch IP, l nh nào sau đây là đúngể ể ổ ộ ị ỉ ệ
a. inet_ntoa(“192.168.1.1”);
b. inet_aton(“192.168.1.1”);
c. inet_addr(“192.168.1.1”);
d. inet_stoi(“192.168.1.1”);
28. Đ chuy n đ i m t đ a ch IP l u trong bi n serverAddr l u tr đ a ch socket sang d ng xâu ký t , l nh nào sau đây là ể ể ổ ộ ị ỉ ư ế ư ữ ị ỉ ạ ự ệ
đúng
a. inet_ntos(serverAddr.sin_addr);
b. inet_ntoa(serverAddr.s_addr);
c. inet_itos(serverAddr.sin_addr);
d. inet_ntoa(serverAddr.sin_addr);
29. Đ chuy n đ i giá tr c ng t đ u nh sang đ u to, l nh nào sau đây sẽ đ c s d ngể ể ổ ị ổ ừ ầ ỏ ầ ệ ượ ử ụ
a. ntohl
b. ntohs
c. htonl
d. htons
30. Đ th c hi n phân gi i tên mi n b ng WinSock, c n b sung t p tiêu đ nàoể ự ệ ả ề ằ ầ ổ ệ ề
a. Winsock2.h
b. Ws2_32.h
c. Ws2ip.h
d. Ws2tcpip.h
31. Đ th c hi n phân gi i tên mi n b ng WinSock, hàm nào sau đây có th s d ngể ự ệ ả ề ằ ể ử ụ
a. getaddrinfo
b. gethostinfo
c. getpeerinfo
d. C ba hàm trênả
32. K t qu tr v c a thao tác phân gi i tên mi n là <A> và ph i gi i phóng b ng hàm/toán t <B>ế ả ả ề ủ ả ề ả ả ằ ử
a. <A>: M ng, <B> deleteả
b. <A>: Danh sách liên k t đ n, <B> freeế ơ
c. <A>: Danh sách liên k t kép, <B> ế
freeaddrinfo
d. <A>: Danh sách liên k t đ n, <B> ế ơ
freeaddrinfo
33. Tr ng nào sau đây trong c u trúc addrinfo ch a thông tin v đ a ch socket phân gi i đ c.ườ ấ ứ ề ị ỉ ả ượ
a. ai_addr.
b. sock_addr.
c. addr.
d. in_addr.
34. Trong tr ng h p nào sau đây hàm ườ ợ bind sẽ th t b iấ ạ
a. T ng l a ch n.ườ ử ặ
b. Đã có ng d ng khác m s d ng c ng ứ ụ ở ử ụ ổ
trên.
c. Socket không h p l .ợ ệ
d. C ba tr ng h p trên.ả ườ ợ
35. L nh nào sau đây sẽ g n m t socket s vào giao di n m ng b t kỳ đ c mô t trong c u trúc đ a ch serverAddr.ệ ắ ộ ệ ạ ấ ượ ả ấ ị ỉ
a. bind(s,(sockaddr_in*)&serverAddr,
sizeof(serverAddr));
b. bind(s,
(sockaddr*)serverAddr,sizeof(serverAddr
));
c. bind(s,
(sockaddr*)&serverAddr,sizeof(sockaddr_
in));
d. Không l nh nào đúng.ệ
36. L nh nào sau đây sẽ gán giá tr c ng 8080 cho c u trúc đ a ch serverAddr.ệ ị ổ ấ ị ỉ
a. serverAddr.sin_port = 8080.
b. serverAddr.s_port = 8080.
c. serverAddr.sin_port = htonl(8080).
d. L nh khác…ệ
37. Đo n ch ng trình sau sẽ th c hi n ch p nh n k t n i t client. Đi n vào ch tr ng các ph ng án c n thi tạ ươ ự ệ ấ ậ ế ố ừ ề ỗ ố ươ ầ ế
SOCKET server,client;
sockaddr_in clientAddr;
int len;
len = <A>;
client = accept(server,<B>, <C>);
a. <A> = 0, <B> = clientAddr, <C> = len.
b. <A> = sizeof(client), <B> = &clientAddr, <C>
=len.
c. <A> = 0, <B> = (sockaddr*)&clientAddr, <C> =
&len.
d. <A> = sizeof(clientAddr), <B> =
(sockaddr*)&clientAddr,&len.

38. Đo n ch ng trình sau th c hi n đ c d li u t bàn phím và g i đi qua socket s. Đi n vào ch tr ng nh ng l nh còn ạ ươ ự ệ ọ ữ ệ ừ ử ề ỗ ố ữ ệ
thi u.ế
char str[1024];
int ret = 0;
gets(str);
<A> = send(s,str,<B>,0);
if (<A> <= 0)
{
printf("Loi gui xau!");
<C>;
}
a. <A> = ret, <B> = 1024, <C> = đ tr ng.ể ố
b. <A> = ret, <B> = sizeof(str), <C> =
close(s).
c. <A> = str, <B> = strlen(str), <C> = close(s).
d. <A> = ret, <B> = strlen(str), <C> =
closesocket(s).
39. Trong l i g i hàm ờ ọ recv(s,buff,1024,0), giá tr 1024 có nghĩa là:ị
a. S byte mu n nh nố ố ậ
b. S byte t i đa mu n nh n.ố ố ố ậ
c. Kích th c b đ m.ướ ộ ệ
d. C b và c đ u đúng.ả ề
40. Khi socket ho t đ ng ch đ đ ng b , m i l i g i hàm sẽ:ạ ộ ở ế ộ ồ ộ ỗ ờ ọ
a. Ch n t t c các lu ng c a ch ng trình ặ ấ ả ồ ủ ươ
cho đ n khi thao tác vào ra hoàn t tế ấ
b. Ch n t t c các lu ng tr lu ng ch a l i ặ ấ ả ồ ừ ồ ứ ờ
g i ọ
c. Ch ch n lu ng ch a l i g i, các lu ng ỉ ặ ồ ứ ờ ọ ồ
khác v n ch y bình th ng.ẫ ạ ườ
d. Không ch n lu ng nào c . ặ ồ ả
41. Khi socket ho t đ ng ch đ b t đ ng b , m i l i g i hàm sẽạ ộ ở ế ộ ấ ồ ộ ỗ ờ ọ
a. Ch n t t c các lu ng c a ch ng trình ặ ấ ả ồ ủ ươ
cho đ n khi thao tác vào ra hoàn t tế ấ
b. Ch n t t c các lu ng tr lu ng ch a l i ặ ấ ả ồ ừ ồ ứ ờ
g i ọ
c. Ch ch n lu ng ch a l i g i, các lu ng ỉ ặ ồ ứ ờ ọ ồ
khác v n ch y bình th ng.ẫ ạ ườ
d. Không ch n lu ng nào c .ặ ồ ả
42. M c đ nh socket khi đ c t o ra ho t đ ng ch đ <A>, hàm <B> sẽ thay đ i ch đ ho t đ ng c a socket.ặ ị ượ ạ ạ ộ ở ế ộ ổ ế ộ ạ ộ ủ
a. <A>: đ ng b , <B>: ioctlsocket.ồ ộ
b. <A>: b t đông b , <B>:ioctlsocket.ấ ộ
c. <A>: đ ng b , <B>: WSAAsyncSelect.ồ ộ
d. C a và c đ u đúngả ề

43. Khi socket s ho t đ ng ch đ đ ng b , hàm recv(s,buff,1024,0) sẽ không ch n lu ng ch a l i g i trong tr ng h p ạ ộ ở ế ộ ồ ộ ặ ồ ứ ờ ọ ườ ợ
nào sau đây.
a. Có d li u t b đ m h th ng nh ng ữ ệ ừ ộ ệ ệ ố ư
không đ 1024 byte.ủ
b. Có đ 1024 byte d li u t b đ m h ủ ữ ệ ừ ộ ệ ệ
th ng.ố
c. K t n i b đóng.ế ố ị
d. C ba ph ng án trên đ u đúng.ả ươ ề
44. N u c n xây d ng server đáp ng đ c t i thi u 10 k t n i, ch ng trình sẽ c n khai báo bao nhiêu socket ?ế ầ ự ứ ượ ố ể ế ố ươ ầ
a. 11
b. 10
c. 20
d. 21
45. N u vi c g i d li u cho các k t n i đ c t p trung vào trong m t lu ng, thì mô hình Blocking c n t i thi u bao nhiêu ế ệ ử ữ ệ ế ố ượ ậ ộ ồ ầ ố ể
lu ng đ đáp ng đ c 100 k t n i.ồ ể ứ ượ ế ố
a. 100
b. 200
c. 201
d. 101
46. Trong mô hình Select, đ thăm dò s ki n k t n i đ n server thành công, client c n cho socket vào t p nàoể ự ệ ế ố ế ầ ậ
a. readfds
b. writefds
c. exceptfds
d. C ba t p đ u đ c.ả ậ ề ượ
47. N u dùng mô hình ế Select và thăm dò s ki n cho 100 k t n i, ng d ng sẽ c n bao nhiêu lu ng ?ự ệ ế ố ứ ụ ầ ồ
a. 100
b. 2
c. 101
d. 1.
48. Trong mô hình Select, socket ch y ch đ nào ?ạ ở ế ộ
a. Đ ng bồ ộ
b. B t đ ng bấ ồ ộ
c. Không xác đ nhị
49. Hàm callback WindowProc đ c g i trong ng c nh c a:ượ ọ ữ ả ủ
a. M t lu ng riêng đ c h th ng t o ra.ộ ồ ượ ệ ố ạ
b. Lu ng chính x lý giao di n.ồ ử ệ
c. Lu ng ph do ch ng trình t o ra.ồ ụ ươ ạ
d. Ph ng án khác…ươ
50. Trong các hàm x lý s ki n c a ch ng trình có giao di n đ h a, có nên g i các hàm đ ng b c a WinSock ?ử ự ệ ủ ươ ệ ồ ọ ọ ồ ộ ủ
a. Không, vì sẽ làm vi c g i nh n d li u ệ ử ậ ữ ệ
c a socket b ch m đi.ủ ị ậ
b. Không, vì sẽ làm h đi u hành b treo.ệ ề ị
c. Có, vì không nh h ng gì đ n ch ng ả ưở ế ươ
trình.
d. Không, vì sẽ làm gi m kh năng đáp ng ả ả ứ
c a ch ng trình v i các s ki n ng i ủ ươ ớ ự ệ ườ
dùng.
51. Trong mô hình WSAEventSelect, gi s ng d ng có 10 SOCKET, c n m y đ i t ng WSAEVENT t ng ng?ả ử ứ ụ ầ ấ ố ượ ươ ứ
a. 10
b. 20
c. 11
d. S khác…ố
52. Đ i t ng WSAEVENT đ c t o ra b i WSACreateEvent có thu c tính:ố ượ ượ ạ ở ộ
a. Signaled, auto reset
b. Non-signaled, auto reset
c. Signaled, manual reset
d. Non-signaled , manual reset
53. Hàm WSAWaitForMultipleEvent sẽ ch n lu ng có l i g i đ n khiặ ồ ờ ọ ế
a. Các đ i t ng EVENT chuy n sang tr ng ố ượ ể ạ
thái báo hi uệ
b. H t giế ờ
c. Các đ i t ng EVENT chuy n sang tr ng ố ượ ể ạ
thái ch a báo hi uư ệ
d. C a và bả
54. Gi s s là socket dùng đ k t n i đ n server khác, l nh nào sau đây thích h p nh t.ả ử ể ế ố ế ệ ợ ấ
a. WSAEventSelect(s, event, FD_ACCEPT |
FD_CLOSE);
b. WSAEventSelect(s, event, FD_CONNECT|
FD_WRITE|FD_READ|FD_CLOSE);
c. WSAEventSelect(s, event, FD_ACCEPT|
FD_CONNECT);
d. WSAEventSelect(s, event, FD_CONNECT|
FD_CLOSE);
55. Nh ng hàm nào sau đây có th s d ng mô hình vào ra Overlappedữ ể ử ụ

a. WSAConnect
b. accept
c. WSARecv
d. a và c
56. Có th s d ng cùng m t đ i t ng EVENT cho hai socket khác nhau trong mô hình Overlapped đ c khôngể ử ụ ộ ố ượ ượ
a. Có b. Không
57. Trong mô hình vào ra Overlapped, completion routine sẽ đ c g i b i:ượ ọ ở
a. Ch ng trình trong cùng lu ng có yêu c u vào ra.ươ ồ ầ
b. Ch ng trình trong m t lu ng khác v i lu ng có yêu c u vào ra.ươ ộ ồ ớ ồ ầ
c. H đi u hành trong lu ng khác v i lu ng có yêu c u vào ra.ệ ề ồ ớ ồ ầ
d. H đi u hành trong lu ng cùng v i lu ng có yêu c u vào ra.ệ ề ồ ớ ồ ầ
58. Alertable là tr ng thái:ạ
a. Đang ng và s n sàng th c hi n hàm callback t h đi u hànhủ ẵ ự ệ ừ ệ ề
b. Đang th c thi và s n sàng th c hi n hàm callback t h đi u hànhự ẵ ự ệ ừ ệ ề
c. Đang ng và ch a s n sàng th c hi n hàm callback t h đi u hànhủ ư ẵ ự ệ ừ ệ ề
d. Đang th c thi và ch a s n sàng th c hi n hàm callback t h đi u hànhự ư ẵ ự ệ ừ ệ ề
59. Hàm nào sau đây có th đ a lu ng v tr ng thái alertableể ư ồ ề ạ
a. SleepEx
b. WSAConnect
c. Sleep
d. C a và cả
60. CSocket là l pớ
a. C s c a CAsyncSocketơ ở ủ
b. D n xu t c a CAsyncSocketẫ ấ ủ
c. K th a c a CAsyncSocketế ừ ủ
d. Không có quan h gì v i CAsyncSocketệ ớ
61. Các ph ng th c c a CSocket đ u ho t đ ngươ ứ ủ ề ạ ộ
a. Đ ng bồ ộ b. B t đ ng bấ ồ ộ
62. Các ph ng th c c a CAsyncSocket đ u ho t đ ngươ ứ ủ ề ạ ộ
a. Đ ng bồ ộ b. B t đ ng bấ ồ ộ
63. Lu ng A t o đ i t ng m có ki u CSocket. Trong lu ng B, l nh nào sau đây là h p lồ ạ ố ượ ể ồ ệ ợ ệ
a. m.Connect(“127.0.0.1”,8888);
b. m.Close();
c. m.ShutDown();
d. C ba đ u không h p l .ả ề ợ ệ
64. Đ x lý s ki n cho CAsyncSocket c n ph iể ử ự ệ ầ ả
a. G n đ i t ng vào m t bi n có ki u WSAEVENT.ắ ố ượ ộ ế ể
b. G n đ i t ng vào m t c a s qua hàm WSAAsyncSelect.ắ ố ượ ộ ử ổ
c. Truy n đ i s là m t hàm callback cho các thao tác vào ra.ề ố ố ộ
d. K th a ra m t l p m i và vi t các ph ng th c ch ng.ế ừ ộ ớ ớ ế ươ ứ ồ
65. Đo n ch ng trình sau s d ng trong ch ng trình chat Voice x lý vi c nh n d li u t server, hãy đi n vào ch tr ng ạ ươ ử ụ ươ ử ệ ậ ữ ệ ừ ề ỗ ố
nh ng l nh c n thi t.ữ ệ ầ ế
enum PACKET_TYPE
{
PACKET_TYPE_TEXT,
PACKET_TYPE_VOICE,
PACKET_TYPE_IMAGE
};

struct Packet
{
char type;
int len;
char data[65536];
};
int total = 0;
int len = 0;
SOCKET s;
Packet p;
recv(s,&p.type,<A> ,MSG_WAITALL);
recv(s,(char*)&p.len,<B>,MSG_WAITALL);
switch (p.type)
{
case <C>:
while (total<p.len)
{
len = recv(s,<D>,<E>,0);
if (len<=0) break;
total+=<F>;
};
p.data[total] = <G>;
printf("Text:%s",p.data);
…
}
Giá tr thích h p cho <A> làị ợ
a. 1 b. 2 c. 4 d. sizeof(p)
66. Giá tr thích h p cho <B> làị ợ
a. 1
b. 2
c. 4
d. sizeof(Packet)
67. Giá tr thích h p cho <C> làị ợ
a. PACKET_TYPE_VOICE
b. PACKET_TYPE_IMAGE
c. PACKET_TYPE_TEXT
d. Giá tr khác…ị
68. Giá tr thích h p cho <D> làị ợ
a. &p
b. p.data
c. p.data+p.len
d. Ph ng án khác…ươ
69. Giá tr thích h p cho <E> làị ợ
a. p.len
b. p.len – total
c. total
d. 65536
70. Giá tr thích h p cho <F> làị ợ
a. len
b. pk.len
c. sizeof(Packet)
d. 4
71. Giá tr thích h p cho <G> làị ợ
a. 0xFF
b. 0
c. 1
d. Ph ng án khác…ươ
72. Đo n ch ng trình sau đây th c hi n nh n d li u t m t socket UDP và ki m tra l i checksum, đi n vào ch tr ng ạ ươ ự ệ ậ ữ ệ ừ ộ ể ạ ề ỗ ố
nh ng l nh thích h pữ ệ ợ
struct Packet
{
int offset;
int len;
unsigned short checksum; // XOR
char data[1024];
};
Packet p;
SOCKADDR_IN from;
int fromLen = <A>;
int total = 0, len;
unsigned short tmpchecksum = 0;
SOCKET s;

memset(&p,0,sizeof(p));
len = recvfrom(s,(char*)&p,10,0,<E>,&fromLen);
while (<B>)
{
len = recvfrom(s,<C>,<D>,0,<E>,&fromLen);
if (len <=0 ) break;
total += len;
};
for (int i=0;i<(p.len+1)/2;i++)
tmpchecksum = tmpchecksum <F> *((unsigned short*)(&p.data[<G>]));
if (tmpchecksum!=p.checksum)
printf("Goi tin bi loi!");
Giá tr thích h p choị ợ <A> là
a. 1024
b. sizeof(p)
c. sizeof(from)
d. Ph ng án khác…ươ
73. Giá tr thích h p cho <B> làị ợ
a. true
b. 1
c. total >= p.len
d. total < p.len
74. Giá tr thích h p cho <C> làị ợ
a. p.data + len
b. p.data
c. p.data + (p.len – total)
d. C ba đ u saiả ề
75. Giá tr thích h p cho <D> làị ợ
a. 1024
b. p.len – total
c. p.len + total
d. p.len
76. Giá tr thích h p cho <E> làị ợ
a. &from
b. sizeof(from)
c. (sockaddr*)from
d. (sockaddr*)&from
77. Giá tr thích h p cho <F> làị ợ
a. ^
b. |
c. &
d. ~
78. Giá tr thích h p cho <G> làị ợ
a. i*2
b. i*3
c. i*4
d. i
79. Đo n ch ng trình server sau qu n lý các k t n i c a client d i d ng danh sách liên k t kép. Đi n vào ch tr ng các ạ ươ ả ế ố ủ ướ ạ ế ề ỗ ố
l nh thích h pệ ợ
struct Connection
{
SOCKADDR_IN addr;
SOCKET s;
HANDLE hThread;
Connection * pNext;
Connection * pPrev;
};
Connection * pHead = 0,*pCur = 0,*pTmp = 0;
SOCKET listen;
SOCKET c;
SOCKADDR_IN cAddr;
int ret , cAddrLen = sizeof(cAddr);
while (1)
{
<A> = accept(listen,(sockaddr*)&cAddr,<B>);
if (!pHead)
{
pTmp = pCur = pHead = <C>;
memset(pTmp,0,sizeof(Connection));
}
else
{
pTmp = <C>;
memset(pTmp,0,sizeof(Connection));

pCur->pNext =<D>;
pTmp->pPrev = <E>;
pCur = pTmp;
};
pTmp->s = <F>;
pTmp->hThread = CreateThread(0,0,ReceiverThread,<G>,0,0);
};
Giá tr thích h p cho <A> làị ợ
a. ret
b. c
c. Đ tr ngể ố
d. pHead
80. Giá tr thích h p cho <B> làị ợ
a. sizeof(cAddr)
b. cAddrLen
c. &cAddrLen
d. &ret
81. Giá tr thích h p cho <C> làị ợ
a. new Connection
b. new SOCKET
c. 0
d. Ph ng án khác…ươ
82. Giá tr thích h p cho <D> làị ơ
a. pTmp
b. pCur
c. pHead
d. pHead->pNext
83. Giá tr thích h p cho <E> làị ợ
a. pHead
b. pCur
c. pTmp
d. pCur->pNext
84. Giá tr thích h p cho <F> làị ợ
a. c
b. listen
c. 0
d. Ph ng án khác…ươ
85. Giá tr thích h p cho <G> làị ợ
a. pHead
b. pCur
c. pTmp
d. 0
86. Đo n ch ng trình sau th c hi n phân gi i tên mi n nh p t bàn phím v i c ng 8888 sau đó hi n các k t qu ra màn ạ ươ ự ệ ả ề ậ ừ ớ ổ ệ ế ả
hình, đi n vào ch tr ng các l nh thích h p.ề ỗ ố ệ ợ
addrinfo * info,*pCur;
char host[1024];
SOCKADDR_IN addr;
int ret;
printf("Nhap dia chi server:");
gets(host);
ret = getaddrinfo(host,<A>,0,<B>);
if (ret)
{
printf("Khong tim thay server");
return 0;
};
pCur = info;
while (pCur)
{
memcpy(&addr,<C>,pCur->ai_addrlen);
printf("%s\n",<D>);
pCur = pCur->ai_next;
};
Giá tr thích h p cho <A> làị ợ
a. “8888”
b. 8888
c. htons(8888)
d. ntohs(8888);
87. Giá tr thích h p cho <B> làị ợ
a. info
b. &info
c. 0

d. &addr
88. Giá tr thích h p cho <C> làị ợ
a. info->ai_addr
b. pCur
c. info
d. pCur->ai_addr
89. Giá tr thích h p cho <D> làị ợ
a. inet_addr(addr.sin_addr)
b. inet_ntoa(pCur)
c. inet_ntoa(pCur->sin_addr)
d. Ph ng án khác…ươ
90. Đo n ch ng trình sau minh h a vi c x lý l nh c a HTTP server đ phân tách URL mà client yêu c u. Server sẽ d ng ạ ươ ọ ệ ử ệ ủ ể ầ ừ
vi c nh n d li u cho đ n khi g p c p ký t “\r\n\r\n”. Đi n vào ch tr ng các l nh thích h pệ ậ ữ ệ ế ặ ặ ự ề ỗ ố ệ ợ
SOCKET s;
char command[1024];
char url[1024];
int len = 0, ret;
char *pos;
while (1)
{
ret = recv(s, <A> , 1 , MSG_WAITALL);
if (ret<=0) break;
len += ret;
if ((command[<B>-1]=='\n')&&(command[<B>-2]=='\r')&&
(command[<B>-4]=='\n')&&(command[<B>-3]=='\r'))
break;
};
command[len] = 0;
if (strstr(command,"GET ")==0)
printf("Unknown command");
pos = strstr(command,"HTTP/1.0");
if (pos==0)
pos = strstr(command,"HTTP/1.1");
if (pos <C> 0)
{
printf("Invalid format");
return 0;
};
strncpy(url,<D>,pos-command-4);
url[<E>] = 0;
Giá tr thích h p cho <A> làị ợ
a. command
b. command+len
c. command+1
d. &command
91. Giá tr thích h p cho <B> làị ợ
a. ret
b. len
c. pos
d. len-1
92. Giá tr thích h p cho <C> làị ợ
a. ==
b. >
c. <
d. <=
93. Giá tr thích h p cho <D> làị ợ
a. command
b. command+4
c. command-4
d. &command+4
94. Giá tr thích h p cho <E> làị ợ
a. pos
b. pos-command










Bấm Tải xuống để xem toàn bộ.