Professional Documents
Culture Documents
Network Programming
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
Mc ch
Cung cp cc kin thc c bn v lp trnh ng dng mng Xy dng ng dng Server. Xy dng ng dng Client. Cc k thut vo ra. Cung cp cc k nng cn thit thit k v xy dng ng dng mng S dng th vin, mi trng, ti liu. Thit k, xy dng chng trnh.
Yu cu
Yu cu v kin thc:
Mng my tnh. Ngn ng lp trnh C/C++. Ngn ng lp trnh C#.
Ln lp y
Thi lng mn hc
Thi lng: 45 tit
L thuyt: 30 tit Bi tp:15 tit
T{i liu
Network Programming for Microsoft Windows Second Edition. Anthony Jone, Jim Ohlun. C# Network Programming. Sybex
|nh gi|
Thi cui k: 80% Qu trnh: 20%
Ni dung
Chng 1. Gii thiu cc m hnh lp trnh mng. Chng 2. B giao thc TCP/IP Chng 3. Windows Socket Chng 4. MFC Socket Chng 5. .NET Socket
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
10
12
13
15
16
17
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
19
20
21
22
23
26
30
33
Khi 16-bit
65,536 34
35
36
37
39
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Destination port
C E W C R E
U R G
A P R S F C S S Y I K H T N N
Window Size
Urgent pointer
40
41
42
43
44
45
46
47
49
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
51
Transport Protocols
52
3.2 c tnh
H tr cc giao thc hng thng ip (message oriented)
Thng ip truyn i c ti to nguyn vn c v kch thc v bin bn nhn
55
3.2 c tnh
H tr cc giao thc hng dng (stream oriented)
Bin ca thng ip khng c bo ton khi truyn i
56
3.2 c tnh
H tr cc giao thc hng kt ni v khng kt ni
Giao thc hng kt ni (connection oriented) thc hin thit lp knh truyn trc khi truyn thng tin. Th d: TCP Giao thc khng kt ni (connectionless) khng cn thit lp knh truyn trc khi truyn. Th d: UDP
57
3.2 c tnh
H tr cc giao thc hng kt ni v khng kt ni
Giao thc hng kt ni (connection oriented) thc hin thit lp knh truyn trc khi truyn thng tin. Th d: TCP Giao thc khng kt ni (connection less) khng cn thit lp knh truyn trc khi truyn. Th d: UDP
58
3.2 c tnh
H tr cc giao thc tin cy v trt t
Tin cy (reliability): m bo chnh xc tng byte c gi n ch. Trt t (ordering): m bo chnh xc trt t tng byte d liu. Byte no gi trc s c nhn trc, byte gi sau s c nhn sau.
59
3.2 c tnh
Multicast
WinSock h tr cc giao thc Multicast: gi d liu n mt hoc nhiu my trong mng.
60
61
wVersionRequested: [IN] phin bn WinSock cn dng. lpWSAData: [OUT] con tr cha thng tin v WinSock ci t trong h thng. Gi tr tr v:
Thnh cng: 0 Tht bi: SOCKET_ERROR
62
63
64
65
Trong : af: [IN] Address Family, h giao thc s s dng, thng l AF_INET, AF_INET6. type: [IN] Kiu socket, SOCK_STREAM cho TCP/IP v SOCK_DGRAM cho UDP/IP. protocol: [IN] Giao thc tng giao vn, IPPROTO_TCP hoc IPPROTO_UDP
66
67
68
70
72
73
socket/ WSASocket
bind
send/ WSASend
accept
listen
recv/ WSARecv
closesocket
WSACleanu p
75
77
Gi tr tr v l mt SOCKET mi, sn sng cho vic gi nhn d liu trn . ng vi mi kt ni ca client s c mt SOCKET ring.
78
81
82
83
84
recv/ WSARecv
send/ WSASend
connect/WSA Connect
closesocket
WSACleanup
85
86
87
WSACleanup();
}
88
89
WSAStartup
WSACleanup
sendto
90
91
WSAStartup
socket/ WSASocket
bind
WSACleanup
recvfrom
93
95
96
97
getsockname: ly a ch cc b ca SOCKET
98
99
100
101
102
103
I/O Request Non-Blocking state Other Computations I/O Complete Perform I/O
104
105
108
109
select
X l s kin
Kt thc ?
Y
111
closesocket
112
113
114
Vit chng trnh SelectTCPServer c th thc hin nhng cng vic sau: p ng c ti a 255 kt ni. S dng m hnh Select. nh danh cc client bng nickname Chuyn tip thng ip t mt nickname n tt c cc nickname khc ang ng nhp vo h thng. C php ng nhp ca mt client: Hello <nickname>\r\n C php gi thng ip ca mt nickname n h thng Chat <ni dung>\r\n C php gi thng ip ca h thng n mt client Chat <nickname> <ni dung>\r\n
116
117
119
121
122
123
124
125
127
128
129
NewEvent = WSACreateEvent();
WSAEventSelect(Accept, NewEvent, FD_READ | FD_WRITE | FD_CLOSE); EventArray[EventTotal] = NewEvent; SocketArray[EventTotal] = Accept; EventTotal++; printf("Socket %d connected\n", Accept); } ...
130
Bi tp
Vit chng trnh chat+gi file n gin (client +server) s dng m hnh WSAEventSelect. C th nhp v hin th ting Vit. C qun l username, password. Ni dung lu trong xu c kiu wchar_t. S lng byte gi i = chiu di xu * 2.
131
Bi tp
Thit k v ci t mt giao thc cho php gi file v vn bn ng thi trn mt kt ni TCP. Thit k v ci t mt giao thc cho php gi file v vn bn ng thi trn mt socket UDP.
132
134
136
137
138
139
140
void CALLBACK CompletionRoutine( IN DWORD dwError, IN DWORD cbTransferred, IN LPWSAOVERLAPPED lpOverlapped, IN DWORD dwFlags) { if (dwError != 0||cbTransferred==0) // X l li { closesocket(s); return; };
141
142
144
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
146
147
148
149
Gi tr tr v: - Khc NULL nu thnh cng - NULL nu tht bi. M li c th truy nhp qua hm GetLastError()
150
151
Gi tr tr v: - S byte gi c nu thnh cng - SOCKET_ERROR nu tht bi Th d: char buff[]=Hello MFC Socket; Client.Send(buff,strlen(buff));
152
153
154
155
156
157
159
161
162
Lng nh Ho{ng
hoangla@soict.hut.edu.vn
164
165
IPEndPoint: ng gi mt a ch socket
Khi to: IPEndPoint(IPAddress, Int32) Ly dng chui: IPEndPoint.ToString();
167
169
170
172
173
Phn phi im
Thi cui k: 70% Chuyn cn: 15% Gia k: 15%
174
Ni dung
Tt c cc chng
175
176