⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_8c-source.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00498                 <span class="keywordflow">return</span>(-1);00499         }00500         00501         soc = &amp;tcp_socket[sockethandle];                                <span class="comment">/* Get socket   */</span>00502         00503         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a53">TCP_STATE_CONNECTED</a>) {00504                 TCP_DEBUGOUT(<span class="stringliteral">"TCP is not connected!!\r\n"</span>);00505                 <span class="keywordflow">return</span>(-1);00506         }00507         00508         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a> != soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>) {00509                 TCP_DEBUGOUT(<span class="stringliteral">"TCP contains unacked data, cannot send more\r\n"</span>);00510                 <span class="keywordflow">return</span>(-1);00511         }00512         00513         <span class="keywordflow">if</span>( dlen &gt; blen )00514                 dlen = blen;00515         00516         <span class="keywordflow">if</span>(dlen + MIN_TCP_HLEN &gt; soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a>) {00517                 <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a> &gt; MIN_TCP_HLEN)00518                         dlen = soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a> - MIN_TCP_HLEN;00519                 <span class="keywordflow">else</span>00520                         <span class="keywordflow">return</span>(-1);00521         }00522         00523         soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a> += dlen;00524         00525         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_ACK | TCP_FLAG_PUSH;00526         <a class="code" href="tcp_8c.html#a15">process_tcp_out</a>(sockethandle, buf - MIN_TCP_HLEN, blen + MIN_TCP_HLEN + 1, dlen);00527         00528         <span class="keywordflow">return</span>(dlen);00529 }00530 00531 <a name="l00549"></a><a class="code" href="tcp_8c.html#a8">00549</a> INT8 <a class="code" href="tcp_8c.html#a8">tcp_close</a> (INT8 sochandle)00550 {00551         <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00552         00553         TCP_DEBUGOUT(<span class="stringliteral">"FUNCTION: tcp_close\r\n"</span>);00554 00555         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS &lt; 0 )00556                 <span class="keywordflow">return</span>(-1);00557         00558         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00559                 <span class="keywordflow">return</span>(-1);00560         00561         <span class="keywordflow">if</span>( sochandle &gt; NO_OF_TCPSOCKETS ) {00562                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00563                 <span class="keywordflow">return</span>(-1);00564         }00565         00566         <span class="keywordflow">if</span>( sochandle &lt; 0 ) {00567                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00568                 <span class="keywordflow">return</span>(-1);00569         }00570         00571         soc = &amp;tcp_socket[sochandle];           <span class="comment">/* Get referense        */</span>      00572         00573         <span class="keywordflow">switch</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a>) {00574                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>:00575                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00576                         <span class="keywordflow">break</span>;00577                 00578                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a46">TCP_STATE_SYN_RECEIVED</a>:00579                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_ACK | TCP_FLAG_FIN;00580                         soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a>++;00581                         soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>++;00582                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(sochandle);00583                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>);00584                         <span class="keywordflow">break</span>;00585                 00586                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a47">TCP_STATE_SYN_SENT</a>:00587                 00588                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00589                 00590                         <span class="keywordflow">break</span>;00591                 00592                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>:00593                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a49">TCP_STATE_FINW2</a>:00594                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a50">TCP_STATE_CLOSING</a>:00595                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a52">TCP_STATE_TIMED_WAIT</a>:00596                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a51">TCP_STATE_LAST_ACK</a>:00597                 00598                         <span class="comment">/* We are closing already       */</span>00599                         00600                         <span class="keywordflow">break</span>;00601                 00602                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a53">TCP_STATE_CONNECTED</a>:00603                 00604                         <span class="comment">/* Is there unacked data?       */</span>00605                         00606                         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a> == soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a> ) {00607                                 <span class="comment">/* There is no unacked data     */</span>00608                                 00609                                 soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_ACK | TCP_FLAG_FIN;00610                                 soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>++;00611                                 <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(sochandle);00612                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>);                             00613                         } <span class="keywordflow">else</span> {00614                                 <span class="comment">/* Can't do much but raise pollable flag to soc-&gt;flags          */</span>00615                                 <span class="comment">/* and process it on tcp_poll                                                           */</span>00616                                 00617                                 soc-&gt;<a class="code" href="structtcb.html#m2">flags</a> |= TCP_INTFLAGS_CLOSEPENDING;00618                                 00619                                 00620                                 <span class="keywordflow">return</span>(sochandle);00621                         }00622                 00623                         <span class="keywordflow">break</span>;00624         00625                 <span class="keywordflow">default</span>:00626                         <span class="keywordflow">return</span>(-1);00627         }00628         00629         <span class="keywordflow">return</span>(sochandle);00630 00631 }00632 00633 00634 <a name="l00648"></a><a class="code" href="tcp_8c.html#a9">00648</a> INT8 <a class="code" href="tcp_8c.html#a9">tcp_getstate</a> (INT8 sochandle)00649 {00650         <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00651 00652         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS &lt; 0 )00653                 <span class="keywordflow">return</span>(-1);00654         00655         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00656                 <span class="keywordflow">return</span>(-1);00657         00658         <span class="keywordflow">if</span>( sochandle &gt; NO_OF_TCPSOCKETS ) {00659                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00660                 <span class="keywordflow">return</span>(-1);00661         }00662         00663         <span class="keywordflow">if</span>( sochandle &lt; 0 ) {00664                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00665                 <span class="keywordflow">return</span>(-1);00666         }00667         00668         soc = &amp;tcp_socket[sochandle];           <span class="comment">/* Get referense        */</span>      00669 00670         <span class="keywordflow">return</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a>);00671 00672 }00673 00674 <a name="l00690"></a><a class="code" href="tcp_8c.html#a10">00690</a> INT16 <a class="code" href="tcp_8c.html#a10">tcp_checksend</a> (INT8 sochandle)00691 {00692         <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00693 00694         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS &lt; 0 )00695                 <span class="keywordflow">return</span>(-1);00696         00697         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00698                 <span class="keywordflow">return</span>(-1);00699         00700         <span class="keywordflow">if</span>( sochandle &gt; NO_OF_TCPSOCKETS ) {00701                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00702                 <span class="keywordflow">return</span>(-1);00703         }00704         00705         soc = &amp;tcp_socket[sochandle];           <span class="comment">/* Get referense        */</span>      00706         00707         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a53">TCP_STATE_CONNECTED</a>)00708                 <span class="keywordflow">return</span>(-1);00709 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -