📄 tcp_8c-source.html
字号:
00261 soc-><a class="code" href="structtcb.html#m11">tos</a> = 0;00262 soc-><a class="code" href="structtcb.html#m16">event_listener</a> = 0;00263 soc-><a class="code" href="structtcb.html#m3">rem_ip</a> = 0;00264 soc-><a class="code" href="structtcb.html#m4">remport</a> = 0;00265 soc-><a class="code" href="structtcb.html#m5">locport</a> = 0;00266 soc-><a class="code" href="structtcb.html#m2">flags</a> = 0;00267 00268 <span class="keywordflow">return</span>(sochandle);00269 00270 }00271 <a name="l00290"></a><a class="code" href="tcp_8c.html#a5">00290</a> INT8 <a class="code" href="tcp_8c.html#a5">tcp_listen</a> (INT8 sochandle, UINT16 port)00291 {00292 <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00293 00294 <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS < 0 )00295 <span class="keywordflow">return</span>(-1);00296 00297 <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00298 <span class="keywordflow">return</span>(-1);00299 00300 <span class="keywordflow">if</span>( sochandle > NO_OF_TCPSOCKETS ) {00301 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00302 <span class="keywordflow">return</span>(-1);00303 }00304 00305 <span class="keywordflow">if</span>( sochandle < 0 ) {00306 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00307 <span class="keywordflow">return</span>(-1);00308 }00309 00310 soc = &tcp_socket[sochandle]; <span class="comment">/* Get referense */</span>00311 00312 <span class="keywordflow">if</span>( (soc-><a class="code" href="structtcb.html#m1">type</a> & <a class="code" href="tcp__ip_8h.html#a39">TCP_TYPE_SERVER</a>) == 0 ) {00313 TCP_DEBUGOUT(<span class="stringliteral">"Socket has no server properties\r\n"</span>);00314 <span class="keywordflow">return</span>(-1);00315 }00316 00317 <span class="keywordflow">if</span>( soc-><a class="code" href="structtcb.html#m16">event_listener</a> == 0) {00318 TCP_DEBUGOUT(<span class="stringliteral">"ERROR:No event listener function specified\r\n"</span>);00319 <span class="keywordflow">return</span>(-1);00320 }00321 00322 00323 <span class="keywordflow">if</span>( (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a43">TCP_STATE_RESERVED</a>) &&00324 (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>) &&00325 (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>) && 00326 (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a52">TCP_STATE_TIMED_WAIT</a>) ) {00327 TCP_DEBUGOUT(<span class="stringliteral">"Not possible to listen, socket on connected state\r\n"</span>);00328 <span class="keywordflow">return</span>(-1);00329 00330 }00331 00332 00333 <span class="comment">/* Init socket */</span>00334 00335 soc-><a class="code" href="structtcb.html#m0">state</a> = <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>;00336 <span class="comment">/*soc->type = TCP_TYPE_SERVER;*/</span>00337 soc-><a class="code" href="structtcb.html#m2">flags</a> = 0;00338 soc-><a class="code" href="structtcb.html#m3">rem_ip</a> = 0;00339 soc-><a class="code" href="structtcb.html#m4">remport</a> = 0;00340 soc-><a class="code" href="structtcb.html#m5">locport</a> = port;00341 soc-><a class="code" href="structtcb.html#m6">send_unacked</a> = 0;00342 soc-><a class="code" href="structtcb.html#m7">myflags</a> = 0;00343 soc-><a class="code" href="structtcb.html#m8">send_next</a> = 0xFFFFFFFF;00344 soc-><a class="code" href="structtcb.html#m9">send_mtu</a> = TCP_DEF_MTU;00345 soc-><a class="code" href="structtcb.html#m12">receive_next</a> = 0;00346 soc-><a class="code" href="structtcb.html#m15">retries_left</a> = 0;00347 00348 TCP_DEBUGOUT(<span class="stringliteral">"TCP listening socket created\r\n"</span>);00349 00350 <span class="keywordflow">return</span>(sochandle);00351 00352 }00353 00354 <a name="l00377"></a><a class="code" href="tcp_8c.html#a6">00377</a> INT8 <a class="code" href="tcp_8c.html#a6">tcp_connect</a> (INT8 sochandle, UINT32 ip, UINT16 rport, UINT16 myport )00378 {00379 <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00380 00381 TCP_DEBUGOUT(<span class="stringliteral">"FUNCTION: tcp_connect\r\n"</span>);00382 00383 <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS < 0 )00384 <span class="keywordflow">return</span>(-1);00385 00386 <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00387 <span class="keywordflow">return</span>(-1);00388 00389 <span class="keywordflow">if</span>( sochandle > NO_OF_TCPSOCKETS ) {00390 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00391 <span class="keywordflow">return</span>(-1);00392 }00393 00394 <span class="keywordflow">if</span>( sochandle < 0 ) {00395 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00396 <span class="keywordflow">return</span>(-1);00397 }00398 00399 <span class="comment">/* Is the local port defined */</span>00400 00401 <span class="keywordflow">if</span>( myport == 0 )00402 myport = <a class="code" href="tcp_8c.html#a89">tcp_getfreeport</a>();00403 00404 <span class="keywordflow">if</span>( myport == 0 )00405 <span class="keywordflow">return</span>(-1);00406 00407 soc = &tcp_socket[sochandle]; <span class="comment">/* Get referense */</span>00408 00409 <span class="comment">/* Do we have client properties? */</span>00410 00411 <span class="keywordflow">if</span>( (soc-><a class="code" href="structtcb.html#m1">type</a> & <a class="code" href="tcp__ip_8h.html#a40">TCP_TYPE_CLIENT</a>) == 0 ) {00412 TCP_DEBUGOUT(<span class="stringliteral">"Socket has no client properties\r\n"</span>);00413 <span class="keywordflow">return</span>(-1);00414 }00415 00416 <span class="keywordflow">if</span>( soc-><a class="code" href="structtcb.html#m16">event_listener</a> == 0) {00417 TCP_DEBUGOUT(<span class="stringliteral">"ERROR:No event listener function specified\r\n"</span>);00418 <span class="keywordflow">return</span>(-1);00419 }00420 00421 <span class="comment">/* Are we on LISTENING, RESERVED or CLOSED state */</span>00422 00423 <span class="keywordflow">if</span>( (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a43">TCP_STATE_RESERVED</a>) &&00424 (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>) &&00425 (soc-><a class="code" href="structtcb.html#m0">state</a> != <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>) ) {00426 TCP_DEBUGOUT(<span class="stringliteral">"Socket on unvalid state to initialize CONNECT\r\n"</span>);00427 <span class="keywordflow">return</span>(-1);00428 }00429 00430 <span class="comment">/* Then just set parameters and send SYN */</span>00431 00432 soc-><a class="code" href="structtcb.html#m3">rem_ip</a> = ip;00433 soc-><a class="code" href="structtcb.html#m4">remport</a> = rport;00434 soc-><a class="code" href="structtcb.html#m5">locport</a> = myport;00435 soc-><a class="code" href="structtcb.html#m2">flags</a> = 0;00436 soc-><a class="code" href="structtcb.html#m9">send_mtu</a> = TCP_DEF_MTU;00437 00438 <span class="comment">/* get initial sequence number */</span>00439 00440 soc-><a class="code" href="structtcb.html#m6">send_unacked</a> = <a class="code" href="tcp_8c.html#a79">tcp_initseq</a>(); 00441 soc-><a class="code" href="structtcb.html#m8">send_next</a> = soc-><a class="code" href="structtcb.html#m6">send_unacked</a> + 1;00442 soc-><a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_SYN;00443 <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(sochandle);00444 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a47">TCP_STATE_SYN_SENT</a>);00445 00446 <span class="keywordflow">return</span>(sochandle);00447 }00448 00449 00450 <a name="l00481"></a><a class="code" href="tcp_8c.html#a7">00481</a> INT16 <a class="code" href="tcp_8c.html#a7">tcp_send</a> (INT8 sockethandle, UINT8* buf, UINT16 blen, UINT16 dlen)00482 {00483 <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00484 UINT8 i;00485 00486 00487 TCP_DEBUGOUT(<span class="stringliteral">"Entering to send TCP data packet\r\n"</span>);00488 00489 kick_WD();00490 00491 <span class="keywordflow">if</span>( sockethandle < 0 ) {00492 TCP_DEBUGOUT(<span class="stringliteral">"ERROR:Socket Handle not valid (<0)\r\n"</span>);00493 <span class="keywordflow">return</span>(-1);00494 }00495 00496 <span class="keywordflow">if</span>( sockethandle > NO_OF_TCPSOCKETS ) {00497 TCP_DEBUGOUT(<span class="stringliteral">"ERROR:Socket Handle not valid (>NO_OF_TCPSOCKETS)\r\n"</span>);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -