📄 a00202.html
字号:
<a name="l00419"></a>00419 <span class="comment"> }</span><a name="l00420"></a>00420 <span class="comment"> \endcode</span><a name="l00421"></a>00421 <span class="comment"> */</span><a name="l00422"></a>00422 <span class="keyword">extern</span> <a class="code" href="a00153.html#g4caecabca98b43919dd11be1c0d4cd8e">u8_t</a> <a class="code" href="a00146.html#gb81e78f890dbbee50c533a9734b74fd9">uip_buf</a>[<a class="code" href="a00153.html#g3589822ecb9d9c4145209756396b8a6b">UIP_BUFSIZE</a>+2];<a name="l00423"></a>00423 <span class="comment"></span><a name="l00424"></a>00424 <span class="comment">/** @} */</span><a name="l00425"></a>00425 <a name="l00426"></a>00426 <span class="comment">/*---------------------------------------------------------------------------*/</span><a name="l00427"></a>00427 <span class="comment">/* Functions that are used by the uIP application program. Opening and</span><a name="l00428"></a>00428 <span class="comment"> * closing connections, sending and receiving data, etc. is all</span><a name="l00429"></a>00429 <span class="comment"> * handled by the functions below.</span><a name="l00430"></a>00430 <span class="comment">*/</span><span class="comment"></span><a name="l00431"></a>00431 <span class="comment">/**</span><a name="l00432"></a>00432 <span class="comment"> * \defgroup uipappfunc uIP application functions</span><a name="l00433"></a>00433 <span class="comment"> * @{</span><a name="l00434"></a>00434 <span class="comment"> *</span><a name="l00435"></a>00435 <span class="comment"> * Functions used by an application running of top of uIP.</span><a name="l00436"></a>00436 <span class="comment"> */</span><a name="l00437"></a>00437 <span class="comment"></span><a name="l00438"></a>00438 <span class="comment">/**</span><a name="l00439"></a>00439 <span class="comment"> * Start listening to the specified port.</span><a name="l00440"></a>00440 <span class="comment"> *</span><a name="l00441"></a>00441 <span class="comment"> * \note Since this function expects the port number in network byte</span><a name="l00442"></a>00442 <span class="comment"> * order, a conversion using HTONS() or htons() is necessary.</span><a name="l00443"></a>00443 <span class="comment"> *</span><a name="l00444"></a>00444 <span class="comment"> \code</span><a name="l00445"></a>00445 <span class="comment"> uip_listen(HTONS(80));</span><a name="l00446"></a>00446 <span class="comment"> \endcode</span><a name="l00447"></a>00447 <span class="comment"> *</span><a name="l00448"></a>00448 <span class="comment"> * \param port A 16-bit port number in network byte order.</span><a name="l00449"></a>00449 <span class="comment"> */</span><a name="l00450"></a>00450 <span class="keywordtype">void</span> <a class="code" href="a00147.html#gdd1ab3704ecd4900eec61a6897d32dc8">uip_listen</a>(<a class="code" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> port);<a name="l00451"></a>00451 <span class="comment"></span><a name="l00452"></a>00452 <span class="comment">/**</span><a name="l00453"></a>00453 <span class="comment"> * Stop listening to the specified port.</span><a name="l00454"></a>00454 <span class="comment"> *</span><a name="l00455"></a>00455 <span class="comment"> * \note Since this function expects the port number in network byte</span><a name="l00456"></a>00456 <span class="comment"> * order, a conversion using HTONS() or htons() is necessary.</span><a name="l00457"></a>00457 <span class="comment"> *</span><a name="l00458"></a>00458 <span class="comment"> \code</span><a name="l00459"></a>00459 <span class="comment"> uip_unlisten(HTONS(80));</span><a name="l00460"></a>00460 <span class="comment"> \endcode</span><a name="l00461"></a>00461 <span class="comment"> *</span><a name="l00462"></a>00462 <span class="comment"> * \param port A 16-bit port number in network byte order.</span><a name="l00463"></a>00463 <span class="comment"> */</span><a name="l00464"></a>00464 <span class="keywordtype">void</span> <a class="code" href="a00147.html#gaa585784b0914cac1d37f07f85457008">uip_unlisten</a>(<a class="code" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> port);<a name="l00465"></a>00465 <span class="comment"></span><a name="l00466"></a>00466 <span class="comment">/**</span><a name="l00467"></a>00467 <span class="comment"> * Connect to a remote host using TCP.</span><a name="l00468"></a>00468 <span class="comment"> *</span><a name="l00469"></a>00469 <span class="comment"> * This function is used to start a new connection to the specified</span><a name="l00470"></a>00470 <span class="comment"> * port on the specied host. It allocates a new connection identifier,</span><a name="l00471"></a>00471 <span class="comment"> * sets the connection to the SYN_SENT state and sets the</span><a name="l00472"></a>00472 <span class="comment"> * retransmission timer to 0. This will cause a TCP SYN segment to be</span><a name="l00473"></a>00473 <span class="comment"> * sent out the next time this connection is periodically processed,</span><a name="l00474"></a>00474 <span class="comment"> * which usually is done within 0.5 seconds after the call to</span><a name="l00475"></a>00475 <span class="comment"> * uip_connect().</span><a name="l00476"></a>00476 <span class="comment"> *</span><a name="l00477"></a>00477 <span class="comment"> * \note This function is avaliable only if support for active open</span><a name="l00478"></a>00478 <span class="comment"> * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.</span><a name="l00479"></a>00479 <span class="comment"> *</span><a name="l00480"></a>00480 <span class="comment"> * \note Since this function requires the port number to be in network</span><a name="l00481"></a>00481 <span class="comment"> * byte order, a conversion using HTONS() or htons() is necessary.</span><a name="l00482"></a>00482 <span class="comment"> *</span><a name="l00483"></a>00483 <span class="comment"> \code</span><a name="l00484"></a>00484 <span class="comment"> uip_ipaddr_t ipaddr;</span><a name="l00485"></a>00485 <span class="comment"></span><a name="l00486"></a>00486 <span class="comment"> uip_ipaddr(&ipaddr, 192,168,1,2);</span><a name="l00487"></a>00487 <span class="comment"> uip_connect(&ipaddr, HTONS(80));</span><a name="l00488"></a>00488 <span class="comment"> \endcode</span><a name="l00489"></a>00489 <span class="comment"> *</span><a name="l00490"></a>00490 <span class="comment"> * \param ripaddr The IP address of the remote hot.</span><a name="l00491"></a>00491 <span class="comment"> *</span><a name="l00492"></a>00492 <span class="comment"> * \param port A 16-bit port number in network byte order.</span><a name="l00493"></a>00493 <span class="comment"> *</span><a name="l00494"></a>00494 <span class="comment"> * \return A pointer to the uIP connection identifier for the new connection,</span><a name="l00495"></a>00495 <span class="comment"> * or NULL if no connection could be allocated.</span><a name="l00496"></a>00496 <span class="comment"> *</span><a name="l00497"></a>00497 <span class="comment"> */</span><a name="l00498"></a>00498 <span class="keyword">struct </span><a class="code" href="a00088.html">uip_conn</a> *<a class="code" href="a00147.html#g8096b0c4b543dc408f4dd031ddae7240">uip_connect</a>(<a class="code" href="a00150.html#g1ef35301f43a5bbb9f89f07b5a36b9a0">uip_ipaddr_t</a> *<a class="code" href="a00088.html#79510aa86d3fa0a0fc6cfc49b1da7279">ripaddr</a>, <a class="code" href="a00153.html#g77570ac4fcab86864fa1916e55676da2">u16_t</a> port);<a name="l00499"></a>00499 <a name="l00500"></a>00500 <a name="l00501"></a>00501 <span class="comment"></span><a name="l00502"></a>00502 <span class="comment">/**</span><a name="l00503"></a>00503 <span class="comment"> * \internal</span><a name="l00504"></a>00504 <span class="comment"> *</span><a name="l00505"></a>00505 <span class="comment"> * Check if a connection has outstanding (i.e., unacknowledged) data.</span><a name="l00506"></a>00506 <span class="comment"> *</span><a name="l00507"></a>00507 <span class="comment"> * \param conn A pointer to the uip_conn structure for the connection.</span><a name="l00508"></a>00508 <span class="comment"> *</span><a name="l00509"></a>00509 <span class="comment"> * \hideinitializer</span><a name="l00510"></a>00510 <span class="comment"> */</span><a name="l00511"></a><a class="code" href="a00147.html#gef14e83c046e19ab9fe9d1bbcca276c2">00511</a> <span class="preprocessor">#define uip_outstanding(conn) ((conn)->len)</span><a name="l00512"></a>00512 <span class="preprocessor"></span><span class="comment"></span><a name="l00513"></a>00513 <span class="comment">/**</span><a name="l00514"></a>00514 <span class="comment"> * Send data on the current connection.</span><a name="l00515"></a>00515 <span class="comment"> *</span><a name="l00516"></a>00516 <span class="comment"> * This function is used to send out a single segment of TCP</span><a name="l00517"></a>00517 <span class="comment"> * data. Only applications that have been invoked by uIP for event</span><a name="l00518"></a>00518 <span class="comment"> * processing can send data.</span><a name="l00519"></a>00519 <span class="comment"> *</span><a name="l00520"></a>00520 <span class="comment"> * The amount of data that actually is sent out after a call to this</span><a name="l00521"></a>00521 <span class="comment"> * funcion is determined by the maximum amount of data TCP allows. uIP</span><a name="l00522"></a>00522 <span class="comment"> * will automatically crop the data so that only the appropriate</span><a name="l00523"></a>00523 <span class="comment"> * amount of data is sent. The function uip_mss() can be used to query</span><a name="l00524"></a>00524 <span class="comment"> * uIP for the amount of data that actually will be sent.</span><a name="l00525"></a>00525 <span class="comment"> *</span><a name="l00526"></a>00526 <span class="comment"> * \note This function does not guarantee that the sent data will</span><a name="l00527"></a>00527 <span class="comment"> * arrive at the destination. If the data is lost in the network, the</span><a name="l00528"></a>00528 <span class="comment"> * application will be invoked with the uip_rexmit() event being</span><a name="l00529"></a>00529 <span class="comment"> * set. The application will then have to resend the data using this</span><a name="l00530"></a>00530 <span class="comment"> * function.</span><a name="l00531"></a>00531 <span class="comment"> *</span><a name="l00532"></a>00532 <span class="comment"> * \param data A pointer to the data which is to be sent.</span><a name="l00533"></a>00533 <span class="comment"> *</span><a name="l00534"></a>00534 <span class="comment"> * \param len The maximum amount of data bytes to be sent.</span><a name="l00535"></a>00535 <span class="comment"> *</span><a name="l00536"></a>00536 <span class="comment"> * \hideinitializer</span><a name="l00537"></a>00537 <span class="comment"> */</span><a name="l00538"></a>00538 <span class="keywordtype">void</span> <a class="code" href="a00147.html#g04b053a623aac7cd4195157d470661b3">uip_send</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">int</span> <a class="code" href="a00088.html#0ef3ae2764714bf90620075c374c262e">len</a>);<a name="l00539"></a>00539 <span class="comment"></span><a name="l00540"></a>00540 <span class="comment">/**</span><a name="l00541"></a>00541 <span class="comment"> * The length of any incoming data that is currently avaliable (if avaliable)</span><a name="l00542"></a>00542 <span class="comment"> * in the uip_appdata buffer.</span><a name="l00543"></a>00543 <span class="comment"> *</span><a name="l00544"></a>00544 <span class="comment"> * The test function uip_data() must first be used to check if there</span><a name="l00545"></a>00545 <span class="comment"> * is any data available at all.</span><a name="l00546"></a>00546 <span class="comment"> *</span><a name="l00547"></a>00547 <span class="comment"> * \hideinitializer</span><a name="l00548"></a>00548 <span class="comment"> */</span><a name="l00549"></a>00549 <span class="comment">/*void uip_datalen(void);*/</span><a name="l00550"></a><a class="code" href="a00147.html#g1a1bc437c09ddef238abab41d77c3177">00550</a> <span class="preprocessor">#define uip_datalen() uip_len</span><a name="l00551"></a>00551 <span class="preprocessor"></span><span class="comment"></span><a name="l00552"></a>00552 <span class="comment">/**</span><a name="l00553"></a>00553 <span class="comment"> * The length of any out-of-band data (urgent data) that has arrived</span><a name="l00554"></a>00554 <span class="comment"> * on the connection.</span><a name="l00555"></a>00555 <span class="comment"> *</span><a name="l00556"></a>00556 <span class="comment"> * \note The configuration parameter UIP_URGDATA must be set for this</span><a name="l00557"></a>00557 <span class="comment"> * function to be enabled.</span><a name="l00558"></a>00558 <span class="comment"> *</span><a name="l00559"></a>00559 <span class="comment"> * \hideinitializer</span><a name="l00560"></a>00560 <span class="comment"> */</span><a name="l00561"></a><a class="code" href="a00147.html#g8411c95a4d89367ad2d9d6bde1a3d537">00561</a> <span class="preprocessor">#define uip_urgdatalen() uip_urglen</span><a name="l00562"></a>00562 <span class="preprocessor"></span><span class="comment"></span><a name="l00563"></a>00563 <span class="comment">/**</span><a name="l00564"></a>00564 <span class="comment"> * Close the current connection.</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -