TCP実装つづき。
これまでに接続要求、切断要求はOKになりました。
次に接続中にクライアント(PC)からデータを送ると本来ならばサーバ(V53ボード)は
ACKを返して完了するはずですがクライアントから何度も同じ電文を再送してくるという現象になります。
サーバからのACKを受けていないのだろうと思い、パケットモニタで電文を解析すると・・・
サーバはクライアントからの電文中のシーケンス番号に受け取ったデータのバイト数を加算して確認応答番号としてサーバに返すことになっていますが、モニタで見ると数バイトのデータを送っただけなのに確認応答番号の増え方がむちゃくちゃなことになっていました。
で、これも結局IPヘッダからデータ長を取得するときバイトオーダをH/L逆に引いてきていたからでした。これを直したら双方向のTCP通信が成功!
このTCP層の上に早速アプリケーションを乗せました。
ポート10000では送った文字列を画面表示、10001では液晶表示・・・といった具合です。
上図はTCPデバッグツールからポート10001を通してボード上の液晶表示器に文字列を送ったところ。