Ngân hàng câu hỏi thi trắc nghiệm Lập Trình Mạng | Trường Đại học Bách khoa Hà Nội

Ngân hàng câu hỏi thi trắc nghiệm Lập Trình Mạng | Trường Đại học Bách khoa Hà Nội. Tài liệu được sưu tầm, giúp bạn ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

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.
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
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. 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
| 1/63