📄 tcp__client__demo_8c-source.html
字号:
00170 <span class="comment"> */</span>00171 INT32 tcpc_demo_eventlistener(INT8 cbhandle, UINT8 event, UINT32 par1, UINT32 par2)00172 {00173 <span class="comment">/* This function is called by TCP stack to inform about events */</span>00174 UINT16 i;00175 00176 <span class="keywordflow">if</span>( cbhandle != <a class="code" href="tcp__client__demo_8c.html#a2">tcpc_demo_soch</a>) <span class="comment">/* Not our handle */</span>00177 <span class="keywordflow">return</span>(-1);00178 00179 <span class="keywordflow">switch</span>( event ){00180 00181 <span class="comment">/* Connection request event. Used by TCP/IP stack to inform</span>00182 <span class="comment"> * the application someone is trying to establish a connection.</span>00183 <span class="comment"> * Server can decide, based on provided IP address and port number,</span>00184 <span class="comment"> * whether to allow or not connection establishment.</span>00185 <span class="comment"> * Parameters:</span>00186 <span class="comment"> * - par1 - remote hosts IP address</span>00187 <span class="comment"> * - par2 - remote hosts port number</span>00188 <span class="comment"> * </span>00189 <span class="comment"> * Return values from event listener:</span>00190 <span class="comment"> * -1 - do not allow connection to be established (send reset)</span>00191 <span class="comment"> * -2 - do not send any response for now to the SYN packet (let's</span>00192 <span class="comment"> * think a little before answering)</span>00193 <span class="comment"> * 1 - allow connection to be established</span>00194 <span class="comment"> */</span>00195 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a54">TCP_EVENT_CONREQ</a>:00196 <span class="comment">/* should never get here in client TCP application! */</span>00197 DEBUGOUT(<span class="stringliteral">"Connection request arrived!\r\n"</span>);00198 00199 <span class="comment">/* Enable all connections */</span>00200 <span class="keywordflow">return</span>(-1);00201 00202 <span class="keywordflow">break</span>;00203 00204 <span class="comment">/* Connection abort event. Connection on a given socket is beeing </span>00205 <span class="comment"> * aborted for somereason (usually retransmissions are used up or </span>00206 <span class="comment"> * some abnormal situation in communication happened).</span>00207 <span class="comment"> * Parameters:</span>00208 <span class="comment"> * - par1 - remote hosts IP address</span>00209 <span class="comment"> * - par2 - remote hosts port number</span>00210 <span class="comment"> */</span>00211 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>:00212 DEBUGOUT(<span class="stringliteral">"Connection aborting!\r\n"</span>);00213 <span class="keywordflow">break</span>;00214 00215 <span class="comment">/* Connection established event - three-way handshaking performed</span>00216 <span class="comment"> * OK and connection is established.</span>00217 <span class="comment"> * Parameters:</span>00218 <span class="comment"> * - par1 - remote hosts IP address</span>00219 <span class="comment"> * - par2 - remote hosts port number</span>00220 <span class="comment"> */</span>00221 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a55">TCP_EVENT_CONNECTED</a>:00222 DEBUGOUT(<span class="stringliteral">"TCP connection established!\r\n"</span>);00223 <span class="comment">/* do something ... (initialize data sending for example */</span>00224 <span class="keywordflow">break</span>;00225 00226 <span class="comment">/* Connection closing event. Happens when TCP connection is</span>00227 <span class="comment"> * intentionally close by some side calling close function and</span>00228 <span class="comment"> * initializing proper TCP connection close procedure.</span>00229 <span class="comment"> * Parameters:</span>00230 <span class="comment"> * - par1 - remote hosts IP address</span>00231 <span class="comment"> * - par2 - remote hosts port number</span>00232 <span class="comment"> */</span>00233 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a56">TCP_EVENT_CLOSE</a>:00234 DEBUGOUT(<span class="stringliteral">"TCP Connection closing...!\r\n"</span>);00235 <span class="keywordflow">break</span>;00236 00237 <span class="comment">/* Data acknowledgment event. Happens when data that was</span>00238 <span class="comment"> * previously sent gets acknowledged. This means we can now</span>00239 <span class="comment"> * send some more data! :-)</span>00240 <span class="comment"> * Parameters:</span>00241 <span class="comment"> * - par1 - remote hosts IP address</span>00242 <span class="comment"> * - par2 - remote hosts port number</span>00243 <span class="comment"> */</span>00244 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a58">TCP_EVENT_ACK</a>:00245 DEBUGOUT(<span class="stringliteral">"Data acknowledged!\r\n"</span>);00246 <span class="comment">/* if more data should be sent, adjust variables and</span>00247 <span class="comment"> set tcpc_demo_senddata variable */</span>00248 00249 <span class="keywordflow">break</span>;00250 00251 <span class="comment">/* Data received event. Happens when we receive some data over the</span>00252 <span class="comment"> * TCP connection.</span>00253 <span class="comment"> * Parameters:</span>00254 <span class="comment"> * - par1 - number of data bytes received</span>00255 <span class="comment"> * - par2 = 0</span>00256 <span class="comment"> */</span>00257 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a60">TCP_EVENT_DATA</a>:00258 DEBUGOUT(<span class="stringliteral">"Data arrived!\r\n"</span>);00259 <span class="comment">/* read data that was received (and </span>00260 <span class="comment"> * probably do something with it :-)</span>00261 <span class="comment"> */</span>00262 <span class="keywordflow">for</span>(i=0;i<par1;i++)00263 <a class="code" href="system_8h.html#a9">RECEIVE_NETWORK_B</a>();00264 00265 <span class="comment">/* If needed initialize data sending</span>00266 <span class="comment"> * by setting tcpc_demo_senddata variable</span>00267 <span class="comment"> */</span>00268 <span class="keywordflow">break</span>;00269 00270 <span class="comment">/* Regenerate data event. Happens when data needs to be</span>00271 <span class="comment"> * retransmitted because of possible loss on the network.</span>00272 <span class="comment"> * Note that THE SAME DATA must be sent over and over again</span>00273 <span class="comment"> * until TCP_EVENT_ACK is generated (for that data)! </span>00274 <span class="comment"> * Parameters:</span>00275 <span class="comment"> * - par1 - amount of data to regenerate (usually all)</span>00276 <span class="comment"> * - par2 = 0</span>00277 <span class="comment"> */</span>00278 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a59">TCP_EVENT_REGENERATE</a>:00279 tcpc_demo_send();00280 <span class="keywordflow">break</span>;00281 00282 00283 <span class="keywordflow">default</span>:00284 <span class="keywordflow">return</span>(-1);00285 }00286 }00287 00288 INT16 tcpc_demo_send(<span class="keywordtype">void</span>){00289 UINT16 i;00290 <span class="comment">/* first check if data sending is possible (it may be that</span>00291 <span class="comment"> * previously sent data is not yet acknowledged)</span>00292 <span class="comment"> */</span>00293 <span class="keywordflow">if</span>(<a class="code" href="tcp_8c.html#a10">tcp_checksend</a>(<a class="code" href="tcp__client__demo_8c.html#a2">tcpc_demo_soch</a>) < 0 ){00294 <span class="comment">/* Not yet */</span>00295 <span class="keywordflow">return</span> -1;00296 }00297 00298 <span class="comment">/* put message in buffer. Message needs to start from TCP_APP_OFFSET</span>00299 <span class="comment"> * because TCP/IP stack will put headers in front of the message to</span>00300 <span class="comment"> * avoid data copying</span>00301 <span class="comment"> */</span>00302 <span class="keywordflow">for</span>(i=0;i<32;i++)00303 net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>+i]=<span class="charliteral">'A'</span>+(i%25);00304 00305 <span class="comment">/* send data */</span>00306 <span class="keywordflow">return</span> <a class="code" href="tcp_8c.html#a7">tcp_send</a>(<a class="code" href="tcp__client__demo_8c.html#a2">tcpc_demo_soch</a>, &net_buf[<a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>], <a class="code" href="group__opentcp__config.html#a4">NETWORK_TX_BUFFER_SIZE</a> - <a class="code" href="tcp__ip_8h.html#a61">TCP_APP_OFFSET</a>, 32);00307 00308 }</pre></div><hr><address style="align: right;"><small>Generated on Sun Aug 3 20:32:59 2003 for OpenTCP by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -