Câu hỏi trắc nghiệm và đáp án môn Lập trình mạng | Trường Đại học Bách Khoa Hà Nội

Câu hỏi trắc nghiệm và đáp án môn Lập trình mạng| Môn Lập trình mạng| Trường Đại học Bách Khoa Hà Nội. Tài liệu gồm 9 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.

Ngân hàng câu hi thi Lp Trình Mng
1. Thư vin liên kết động ca Windows Socket tên là:
a. WinSock.DLL
b. WinSock2.DLL
c. WS2.DLL
d. WS2_32.DLL
2. Đ th s dng thư vin Windows Socket, tp tiêu đề cn khai báo là:
a. Winsock.h
b. Winsock2.h
c. Ws2_32.h
d. Ws2.h
3. Đ th s dng dng thư vin Windows Socket, tp thư vin cn 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 chun đoán mng dùng để hin th các kết ni hin trên máy tính
a. Wireshark
b. TCPView
c. Netcat
d. Tt c các công c trên
5. Công c dùng để theo dõi tài nguyên s dng ca máy tính trên h điu hành Windows
a. Task Manager
b. Resource Monitor
c. Wireshark
d. Phương án a b.
6. Công c dùng để bt các gói tin gi ra vào mt giao din mng ca máy tính
a. Netcat
b. Network Monitor
c. Cain
d. Không phương án nào đúng.
7. Công c đa năng, va th đóng vai trò client, va server, chy trên giao thc TCP, UDP là.
a. Netcat
b. TCPDump
c. Netstat
d. Network Monitor
8. Nếu cn phi viết mt ng dng cn tính đáp ng nhanh chp nhn sai sót. Giao thc la chn s
a. TCP
b. IP
c. ICMP
d. UDP
9. Dch v phân gii tên min chy tng nào trong các tng sau đây
a. Application
b. Transport
c. Internetwork
d. Datalink
10. Giao thc nào được s dng để chia s mt địa ch toàn cc cho mt nhóm các máy tính trong mng LAN.
a. VLAN
b. MAC
c. NAT
d. Không đáp án nào đúng
11. Trong mt mng máy tính được chia s chung mt địa ch IP toàn cc. Thiết lp nào sau đây s cho phép mt máy tính t Internet ch động kết ni đến
mt máy ch trong mng.
a. DMZ
b. Virtual Server
c. Port Forwarding
d. C ba phương án trên.
12. Công c nào s dng để kim tra hot động ca mt máy ch phân gii tên min
a. Ping
b. Nslookup
c. Netstat
d. Ipconfig
13. Nếu cn phát trin thêm trình điu khin cho mt loi thiết b mi. ng dng s phi viết tng nào ca Windows Socket
a. Application
b. Provider
c. Transport Protocol
d. Không tng nào đúng
14. Nếu cn phi thiết kế mt giao thc mi, ng dng s phi tích hp vào tng nào ca Windows Socket API
a. Application
b. Provider
c. Transport Protocol
d. Không tng nào đúng.
15. Trình điu khin cho mt thiết b mng chy chế độ
a. User Mode
b. Kernel Mode
c. System Mode
d. Không phương án nào đúng.
16. Biên ca thông đip trong các giao thc hướng dòng được bo toàn hay không ?
a.
b. Không
c. y tng trường hp, nếu được t chc hp .
17. Hàm nào sau đây thc hin công vic khi to Windows Socket
a. WSStartup
b. WinsockStartup
c. SocketStartup
d. WSAStartup
18. WSADATA cu trúc dùng để
a. Truyn thông tin v phiên bn WinSock ng dng
mun khi to
b. Nhn thông tin v phiên bn WinSock trên h thng.
c. C hai đáp án đều sai.
19. Hàm nào sau đây s dng để gii phóng Windows Socket API.
a. WSACleanup
b. WSCleanup
c. Cleanup
d. Phương án khác:
20. Đ ly li ca thao tác ngay trước đó. Hàm nào sau đây s được s dng
a. GetLastError
b. WSAGetError
c. WSAGetLastError
d. WSALastError
21. Đon chương trình sau thc hin kết ni đến mt server, đin vào v trí <A>, <B>, <C> các lnh 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>: để
trng.
d. Không phương án nào đúng.
22. Trong Windows Socket, vi các hàm không tin t WSA thì li tr v 0 nghĩa là:
a. Thành công
b. Tht bi
c. y trường hp
23. Lnh nào sau đây dùng để to mt socket TCP
a. socket(AF_INET,SOCK_STREAM,IPPROTO_TCP).
b. socket(AF_INET,SOCK_DGRAM,IPROTO_TCP).
c. Socket(AF_INET,SOCK_STREAM,IPPROTO_UDP).
d. socket(AF_INET,SOCKSTREAM,IPPROTOTCP).
24. Lnh nào sau đây dùng để to mt socket UDP
a. socket(AF_INET,SOCK_UDP, IPPROTO_TCP).
b. socket(AF_INET,SOCK_DGRAM,IPROTO_TCP).
c. Socket(AF_INET,SOCK_STREAM,IPPROTO_UDP).
d. Không lnh nào đúng.
25. Cu trúc nào được s dng để khai báo địa ch socket internet:
a. sock_addr
b. sockaddr
c. sockaddr_in
d. sock_addr_in
26. Các giá tr ln hơn 01 byte trong cu trúc lưu tr địa ch ca socket được t chc theo kiu:
a. Đu to
b. Đu nh
c. y trường hp
27. Đ chuyn đổi mt xâu sang địa ch IP, lnh nào sau đây đú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. Đ chuyn đổi mt địa ch IP lưu trong biến serverAddr lưu tr địa ch socket sang dng xâu t, lnh nào sau đây đú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. Đ chuyn đổi giá tr cng t đầu nh sang đầu to, lnh nào sau đây s được s dng
a. ntohl
b. ntohs
c. htonl
d. htons
30. Đ thc hin phân gii tên min bng WinSock, cn b sung tp tiêu đề nào
a. Winsock2.h
b. Ws2_32.h
c. Ws2ip.h
d. Ws2tcpip.h
31. Đ thc hin phân gii tên min bng WinSock, hàm nào sau đây th s dng
a. getaddrinfo
b. gethostinfo
c. getpeerinfo
d. C ba hàm trên
32. Kết qu tr v ca thao tác phân gii tên min <A> phi gii phóng bng hàm/toán t <B>
a. <A>: Mng, <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 cu trúc addrinfo cha thông tin v địa ch socket phân gii được.
a. ai_addr.
b. sock_addr.
c. addr.
d. in_addr.
34. Trong trường hp nào sau đây hàm bind s tht bi
a. Tường la chn.
b. Đã ng dng khác m s dng cng trên.
c. Socket không hp l.
d. C ba trường hp trên.
35. Lnh nào sau đây s gn mt socket s vào giao din mng bt k được t trong cu 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 lnh nào đúng.
36. Lnh nào sau đây s gán giá tr cng 8080 cho cu trúc địa ch serverAddr.
a. serverAddr.sin_port = 8080.
b. serverAddr.s_port = 8080.
c. serverAddr.sin_port = htonl(8080).
d. Lnh khác
37. Đon chương trình sau s thc hin chp nhn kết ni t client. Đin vào ch trng các phương án cn 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. Đon chương trình sau thc hin đọc d liu t bàn phím gi đi qua socket s. Đin vào ch trng nhng lnh 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> = để trng.
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 li gi hàm recv(s,buff,1024,0), giá tr 1024 nghĩa là:
a. S byte mun nhn
b. S byte ti đa mun nhn.
c. Kích thước b đệm.
d. C b c đều đúng.
40. Khi socket hot động chế độ đồng b, mi li gi hàm s:
a. Chn tt c các lung ca chương trình cho đến khi thao
tác vào ra hoàn tt
b. Chn tt c các lung tr lung cha li gi
c. Ch chn lung cha li gi, các lung khác vn chy
bình thường.
d. Không chn lung nào c.
41. Khi socket hot động chế độ bt đồng b, mi li gi hàm s
a. Chn tt c các lung ca chương trình cho đến khi thao
tác vào ra hoàn tt
b. Chn tt c các lung tr lung cha li gi
c. Ch chn lung cha li gi, các lung khác vn chy
bình thường.
d. Không chn lung nào c.
42. Mc định socket khi được to ra hot động chế độ <A>, hàm <B> s thay đổi chế độ hot động ca socket.
a. <A>: đồng b, <B>: ioctlsocket.
b. <A>: bt đông b, <B>:ioctlsocket.
c. <A>: đồng b, <B>: WSAAsyncSelect.
d. C a c đều đúng
43. Khi socket s hot động chế độ đồng b, hàm recv(s,buff,1024,0) s không chn lung cha li gi trong trường hp nào sau đây.
a. d liu t b đệm h thng nhưng không đủ 1024
byte.
b. đủ 1024 byte d liu t b đệm h thng.
c. Kết ni b đóng.
d. C ba phương án trên đều đúng.
44. Nếu cn xây dng server đáp ng được ti thiu 10 kết ni, chương trình s cn khai báo bao nhiêu socket ?
a. 11
b. 10
c. 20
d. 21
45. Nếu vic gi d liu cho các kết ni được tp trung vào trong mt lung, thì hình Blocking cn ti thiu bao nhiêu lung để đáp ng được 100 kết
ni.
a. 100
b. 200
c. 201
d. 101
46. Trong hình Select, để thăm s kin kết ni đến server thành công, client cn cho socket vào tp nào
a. readfds
b. writefds
c. exceptfds
d. C ba tp đều được.
47. Nếu dùng hình Select thăm s kin cho 100 kết ni, ng dng s cn bao nhiêu lung ?
a. 100
b. 2
c. 101
d. 1.
48. Trong hình Select, socket chy chế độ nào ?
a. Đng b
b. Bt đồng b
c. Không xác định
49. Hàm callback WindowProc được gi trong ng cnh ca:
a. Mt lung riêng được h thng to ra.
b. Lung chính x giao din.
c. Lung ph do chương trình to ra.
d. Phương án khác
50. Trong các hàm x s kin ca chương trình giao din đồ ha, nên gi các hàm đồng b ca WinSock ?
a. Không, s làm vic gi nhn d liu ca socket b
chm đi.
b. Không, s làm h điu hành b treo.
c. Có, không nh hưởng đến chương trình.
d. Không, s làm gim kh năng đáp ng ca chương
trình vi các s kin người dùng.
51. Trong hình WSAEventSelect, gi s ng dng 10 SOCKET, cn my đối tượng WSAEVENT tương ng?
a. 10
b. 20
c. 11
d. S khác
52. Đi tượng WSAEVENT được to ra bi WSACreateEvent thuc 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 chn lung li gi đến khi
a. Các đối tượng EVENT chuyn sang trng thái báo hiu
b. Hết gi
c. Các đối tượng EVENT chuyn sang trng thái chưa báo
hiu
d. C a b
54. Gi s s socket dùng để kết ni đến server khác, lnh nào sau đây thích hp nht.
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. Nhng hàm nào sau đây th s dng hình vào ra Overlapped
a. WSAConnect
b. accept
c. WSARecv
d. a c
56. th s dng cùng mt đối tượng EVENT cho hai socket khác nhau trong hình Overlapped được không
a.
b. Không
57. Trong hình vào ra Overlapped, completion routine s được gi bi:
a. Chương trình trong cùng lung yêu cu vào ra.
b. Chương trình trong mt lung khác vi lung yêu cu vào ra.
c. H điu hành trong lung khác vi lung yêu cu vào ra.
d. H điu hành trong lung cùng vi lung yêu cu vào ra.
58. Alertable trng thái:
a. Đang ng sn sàng thc hin hàm callback t h điu hành
b. Đang thc thi sn sàng thc hin hàm callback t h điu hành
c. Đang ng chưa sn sàng thc hin hàm callback t h điu hành
d. Đang thc thi chưa sn sàng thc hin hàm callback t h điu hành
59. Hàm nào sau đây th đưa lung v trng thái alertable
a. SleepEx
b. WSAConnect
c. Sleep
d. C a c
60. CSocket lp
a. Cơ s ca CAsyncSocket
b. Dn xut ca CAsyncSocket
c. Kế tha ca CAsyncSocket
d. Không quan h vi CAsyncSocket
61. Các phương thc ca CSocket đều hot động
a. Đng b
b. Bt đồng b
62. Các phương thc ca CAsyncSocket đều hot động
a. Đng b
b. Bt đồng b
63. Lung A to đối tượng m kiu CSocket. Trong lung B, lnh nào sau đây hp l
a. m.Connect(“127.0.0.1”,8888);
b. m.Close();
c. m.ShutDown();
d. C ba đều không hp l.
64. Đ x s kin cho CAsyncSocket cn phi
a. Gn đối tượng vào mt biến kiu WSAEVENT.
b. Gn đối tượng vào mt ca s qua hàm WSAAsyncSelect.
c. Truyn đối s mt hàm callback cho các thao tác vào ra.
d. Kế tha ra mt lp mi viết các phương thc chng.
65. Đon chương trình sau s dng trong chương trình chat Voice x vic nhn d liu t server, hãy đin vào ch trng nhng lnh cn 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 hp cho <A>
a. 1
b. 2
c. 4
d. sizeof(p)
66. Giá tr thích hp cho <B>
a. 1
b. 2
c. 4
d. sizeof(Packet)
67. Giá tr thích hp cho <C>
a. PACKET_TYPE_VOICE
b. PACKET_TYPE_IMAGE
c. PACKET_TYPE_TEXT
d. Giá tr khác
68. Giá tr thích hp cho <D>
a. &p
b. p.data
c. p.data+p.len
d. Phương án khác
69. Giá tr thích hp cho <E>
a. p.len
b. p.len total
c. total
d. 65536
70. Giá tr thích hp cho <F>
a. len
b. pk.len
c. sizeof(Packet)
d. 4
71. Giá tr thích hp cho <G>
a. 0xFF
b. 0
c. 1
d. Phương án khác
72. Đon chương trình sau đây thc hin nhn d liu t mt socket UDP kim tra li checksum, đin vào ch trng nhng lnh thích hp
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 hp cho <A>
a. 1024
b. sizeof(p)
c. sizeof(from)
d. Phương án khác
73. Giá tr thích hp cho <B>
a. true
b. 1
c. total >= p.len
d. total < p.len
74. Giá tr thích hp cho <C>
a. p.data + len
b. p.data
c. p.data + (p.len total)
d. C ba đều sai
75. Giá tr thích hp cho <D>
a. 1024
b. p.len total
c. p.len + total
d. p.len
76. Giá tr thích hp cho <E>
a. &from
b. sizeof(from)
c. (sockaddr*)from
d. (sockaddr*)&from
77. Giá tr thích hp cho <F>
a. ^
b. |
c. &
d. ~
78. Giá tr thích hp cho <G>
a. i*2
b. i*3
c. i*4
d. i
79. Đon chương trình server sau qun các kết ni ca client dưới dng danh sách liên kết kép. Đin vào ch trng các lnh thích hp
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 hp cho <A>
a. ret
b. c
c. Đ trng
d. pHead
80. Giá tr thích hp cho <B>
a. sizeof(cAddr)
b. cAddrLen
c. &cAddrLen
d. &ret
81. Giá tr thích hp cho <C>
a. new Connection
b. new SOCKET
c. 0
d. Phương án khác
82. Giá tr thích hơp cho <D>
a. pTmp
b. pCur
c. pHead
d. pHead->pNext
83. Giá tr thích hp cho <E>
a. pHead
b. pCur
c. pTmp
d. pCur->pNext
84. Giá tr thích hp cho <F>
a. c
b. listen
c. 0
d. Phương án khác
85. Giá tr thích hp cho <G>
a. pHead
b. pCur
c. pTmp
d. 0
86. Đon chương trình sau thc hin phân gii tên min nhp t bàn phím vi cng 8888 sau đó hin các kết qu ra màn hình, đin vào ch trng các lnh
thích hp.
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 hp cho <A>
a. “8888”
b. 8888
c. htons(8888)
d. ntohs(8888);
87. Giá tr thích hp cho <B>
a. info
b. &info
c. 0
d. &addr
88. Giá tr thích hp cho <C>
a. info->ai_addr
b. pCur
c. info
d. pCur->ai_addr
89. Giá tr thích hp cho <D>
a. inet_addr(addr.sin_addr)
b. inet_ntoa(pCur)
c. inet_ntoa(pCur->sin_addr)
d. Phương án khác
90. Đon chương trình sau minh ha vic x lnh ca HTTP server để phân tách URL client yêu cu. Server s dng vic nhn d liu cho đến khi
gp cp t “\r\n\r\n. Đin vào ch trng các lnh thích hp
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 hp cho <A>
a. command
b. command+len
c. command+1
d. &command
91. Giá tr thích hp cho <B>
a. ret
b. len
c. pos
d. len-1
92. Giá tr thích hp cho <C>
a. ==
b. >
c. <
d. <=
93. Giá tr thích hp cho <D>
a. command
b. command+4
c. command-4
d. &command+4
94. Giá tr thích hp cho <E>
a. pos
b. pos-command
c. pos-command+4
d. pos-command-4
Đáp án đề 217
Đáp án đề 515
| 1/9

Preview text:

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 c. WS2.DLL b. WinSock2.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 c. Ws2_32.h b. Winsock2.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 c. WS2_32.DLL b. WS2_32.LIB 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 c. Netcat b. TCPView 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 c. Wireshark b. Resource Monitor 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 c. Cain b. Network Monitor 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 c. Netstat b. TCPDump 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 c. ICMP b. IP 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 c. Internetwork b. Transport 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 c. NAT b. MAC 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 c. Port Forwarding b. Virtual Server 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 c. Netstat b. Nslookup 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 c. Transport Protocol b. Provider 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 c. Transport Protocol b. Provider 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 c. System Mode b. Kernel 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ó c.
Tùy từng trường hợp, nếu được tổ chức hợp lý. b. Không
17. Hàm nào sau đây thực hiện công việc khởi tạo Windows Socket a. WSStartup c. SocketStartup b. WinsockStartup 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 b.
Nhận thông tin về phiên bản WinSock có trên hệ thống. muốn khởi tạo 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 c. Cleanup b. WSCleanup 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 c. WSAGetLastError b. WSAGetError 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í , , 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.
: GetLastError, : closesocket (s), : c.
: WSALastError(), : closesocket(s), : để WSACleanup(). trống. b.
: WSAGetLastError(), close(s), : Cleanup(). 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 c. Tùy trường hợp b. Thất bại
23. Lệnh nào sau đây dùng để tạo một socket TCP a.
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP). c.
Socket(AF_INET,SOCK_STREAM,IPPROTO_UDP). b.
socket(AF_INET,SOCK_DGRAM,IPROTO_TCP). d.
socket(AF_INET,SOCKSTREAM,IPPROTOTCP).
24. Lệnh nào sau đây dùng để tạo một socket UDP a.
socket(AF_INET,SOCK_UDP, IPPROTO_TCP). c.
Socket(AF_INET,SOCK_STREAM,IPPROTO_UDP). b.
socket(AF_INET,SOCK_DGRAM,IPROTO_TCP). 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 c. sockaddr_in b. sockaddr 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 c. Tùy trường hợp b. Đầu nhỏ
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”); c. inet_addr(“192.168.1.1”); b. inet_aton(“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); c.
inet_itos(serverAddr.sin_addr); b. inet_ntoa(serverAddr.s_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 c. htonl b. ntohs 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 c. Ws2ip.h b. Ws2_32.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 c. getpeerinfo b. gethostinfo 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à và phải giải phóng bằng hàm/toán tử a. : Mảng, delete c.
: Danh sách liên kết kép, freeaddrinfo b.
: Danh sách liên kết đơn, free d.
: Danh sách liên kết đơn, 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. c. addr. b. sock_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. c. Socket không hợp lệ. b.
Đã có ứng dụng khác mở sử dụng cổng trên. 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, c.
bind(s,(sockaddr*)&serverAddr,sizeof(sockaddr_in)); sizeof(serverAddr)); d. Không lệnh nào đúng. b.
bind(s,(sockaddr*)serverAddr,sizeof(serverAddr));
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. c.
serverAddr.sin_port = htonl(8080). b. serverAddr.s_port = 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 = ; client = accept(server,, ); a. = 0, = clientAddr, = len. d. = sizeof(clientAddr), = b.
= sizeof(client), = &clientAddr, =len.
(sockaddr*)&clientAddr,&len. c.
= 0, = (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); = send(s,str,,0); if ( <= 0) { printf("Loi gui xau!"); ; } a.
= ret, = 1024, = để trống. c.
= str, = strlen(str), = close(s). b.
= ret, = sizeof(str), = close(s). d.
= ret, = strlen(str), = 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 c. Kích thước bộ đệm. b.
Số byte tối đa muốn nhận. 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 c.
Chỉ chặn luồng chứa lời gọi, các luồng khác vẫn chạy tác vào ra hoàn tất bình thường. b.
Chặn tất cả các luồng trừ luồng chứa lời gọi 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 c.
Chỉ chặn luồng chứa lời gọi, các luồng khác vẫn chạy tác vào ra hoàn tất bình thường. b.
Chặn tất cả các luồng trừ luồng chứa lời gọi d.
Không chặn luồng nào cả.
42. Mặc định socket khi được tạo ra hoạt động ở chế độ , hàm sẽ thay đổi chế độ hoạt động của socket. a.
: đồng bộ, : ioctlsocket. c.
: đồng bộ, : WSAAsyncSelect. b.
: bất đông bộ, :ioctlsocket. 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 c. Kết nối bị đóng. byte. d.
Cả ba phương án trên đều đúng. b.
Có đủ 1024 byte dữ liệu từ bộ đệm hệ thố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 c. 20 b. 10 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 c. 201 b. 200 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 c. exceptfds b. writefds 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 c. 101 b. 2 d. 1.
48. Trong mô hình Select, socket chạy ở chế độ nào ? a. Đồng bộ c. Không xác định b. Bất đồng bộ
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. c.
Luồng phụ do chương trình tạo ra. b.
Luồng chính xử lý giao diện. 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ị c.
Có, vì không ảnh hưởng gì đến chương trình. chậm đi. d.
Không, vì sẽ làm giảm khả năng đáp ứng của chương b.
Không, vì sẽ làm hệ điều hành bị treo.
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 c. 11 b. 20 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 c. Signaled, manual reset b. Non-signaled, auto 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 d. Cả a và b b. Hết giờ c.
Các đối tượng EVENT chuyển sang trạng thái chưa báo hiệu
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); c.
WSAEventSelect(s, event, FD_ACCEPT| FD_CONNECT); b.
WSAEventSelect(s, event, FD_CONNECT| d.
WSAEventSelect(s, event, FD_CONNECT| FD_CLOSE); FD_WRITE|FD_READ|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 c. WSARecv b. accept 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 c. Sleep b. WSAConnect d. Cả a và c 60. CSocket là lớp a. Cơ sở của CAsyncSocket c. Kế thừa của CAsyncSocket b.
Dẫn xuất 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); c. m.ShutDown(); b. m.Close(); 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, ,MSG_WAITALL);
recv(s,(char*)&p.len,,MSG_WAITALL); switch (p.type) { case : while (total{ len = recv(s,,,0); if (len<=0) break; total+=; }; p.data[total] = ; printf("Text:%s",p.data); … }
Giá trị thích hợp cho là a. 1 b. 2 c. 4 d. sizeof(p)
66. Giá trị thích hợp cho là a. 1 b. 2 c. 4 d. sizeof(Packet)
67. Giá trị thích hợp cho 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 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 là a. p.len b. p.len – total c. total d. 65536
70. Giá trị thích hợp cho là a. len b. pk.len c. sizeof(Packet) d. 4
71. Giá trị thích hợp cho 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 = ; int total = 0, len; unsigned short tmpchecksum = 0; SOCKET s; memset(&p,0,sizeof(p));
len = recvfrom(s,(char*)&p,10,0,,&fromLen); while () {
len = recvfrom(s,,,0,,&fromLen); if (len <=0 ) break; total += len; };
for (int i=0;i<(p.len+1)/2;i++)
tmpchecksum = tmpchecksum *((unsigned short*)(&p.data[])); if (tmpchecksum!=p.checksum) printf("Goi tin bi loi!");
Giá trị thích hợp cho là a. 1024 b. sizeof(p) c. sizeof(from) d. Phương án khác…
73. Giá trị thích hợp cho là a. true b. 1 c. total >= p.len d. total < p.len
74. Giá trị thích hợp cho 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 là a. 1024 b. p.len – total c. p.len + total d. p.len
76. Giá trị thích hợp cho là a. &from b. sizeof(from) c. (sockaddr*)from d. (sockaddr*)&from
77. Giá trị thích hợp cho là a. ^ b. | c. & d. ~
78. Giá trị thích hợp cho 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) {
= accept(listen,(sockaddr*)&cAddr,); if (!pHead) { pTmp = pCur = pHead = ;
memset(pTmp,0,sizeof(Connection)); } else { pTmp = ;
memset(pTmp,0,sizeof(Connection)); pCur->pNext =; pTmp->pPrev = ; pCur = pTmp; }; pTmp->s = ;
pTmp->hThread = CreateThread(0,0,ReceiverThread,,0,0); };
Giá trị thích hợp cho là a. ret b. c c. Để trống d. pHead
80. Giá trị thích hợp cho là a. sizeof(cAddr) b. cAddrLen c. &cAddrLen d. &ret
81. Giá trị thích hợp cho là a. new Connection b. new SOCKET c. 0 d. Phương án khác…
82. Giá trị thích hơp cho là a. pTmp b. pCur c. pHead d. pHead->pNext
83. Giá trị thích hợp cho là a. pHead b. pCur c. pTmp d. pCur->pNext
84. Giá trị thích hợp cho là a. c b. listen c. 0 d. Phương án khác…
85. Giá trị thích hợp cho 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,,0,); if (ret) {
printf("Khong tim thay server"); return 0; }; pCur = info; while (pCur) {
memcpy(&addr,,pCur->ai_addrlen); printf("%s\n",); pCur = pCur->ai_next; };
Giá trị thích hợp cho là a. “8888” b. 8888 c. htons(8888) d. ntohs(8888);
87. Giá trị thích hợp cho là a. info b. &info c. 0 d. &addr
88. Giá trị thích hợp cho là a. info->ai_addr b. pCur c. info d. pCur->ai_addr
89. Giá trị thích hợp cho 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, , 1 , MSG_WAITALL); if (ret<=0) break; len += ret;
if ((command[-1]=='\n')&&(command[-2]=='\r')&&
(command[-4]=='\n')&&(command[-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 0) { printf("Invalid format"); return 0; }; strncpy(url,,pos-command-4); url[] = 0;
Giá trị thích hợp cho là a. command b. command+len c. command+1 d. &command
91. Giá trị thích hợp cho là a. ret b. len c. pos d. len-1
92. Giá trị thích hợp cho là a. == b. > c. < d. <=
93. Giá trị thích hợp cho là a. command b. command+4 c. command-4 d. &command+4
94. Giá trị thích hợp cho là a. pos b. pos-command c. pos-command+4 d. pos-command-4 Đáp án đề 217 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 d d b b d b d b a a c d c b b 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 b d b d b c c a d d c a c a d 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 d a c a b a d d a b Đáp án đề 515 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 d b b d b a d a c d b c b b b 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 d b a c d a a d c a c d d d d 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 a d d a b d a c a b