デバイスでLinux 2.6.33を使用しています。 TCPソケットを介してデバイスに接続するPCアプリケーションが使用されます。アプリケーションからの要求に応じて最大1 MBのデータが転送されます。TCPソケットを突然終了して再接続する方法
検討アプリケーションが接続され、正常に動作し、デバイスのIPアドレスが変更された場合(これはコマンドで可能です)。これで、アプリケーションで突然接続が切断されますが、デバイス上では接続が切断されます。しかし、ユーザーは新しいIPアドレスでデバイスに再接続することを期待しています。場合によっては、 "send()"が途中でデータをすべて送信していない可能性があります。その場合、すぐにソケットが閉じられるまでユーザーは再接続できません。
。シーケンス netstatの出力が示す「(靴下)近くのシャットダウン(靴下、RDWR)、」:
$ netstat -nt
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 29200 xx.xx.xx.xx:3000 xx.xx.xx.xx:50639 ESTABLISHED
それが送信-Qは、まだ空ではありませんので、接続が設立した状態にまだあることを示しているように、これ。ソケットはある時間の後に閉じられ、どれくらいの時間であるか分かりませんソケット実装で定義されるかもしれません
PCアプリケーションから同じTCPポートを介して新しい接続が可能になるように、彼のソケットはすぐに?
これは、保留中の送信を完了するか、応答がない場合に中止するまでに要する時間によって定義されます。私は、「ユーザーが新しいIPアドレスでデバイスに再接続することを期待している」という部分については理解していません。なぜ新しいIPアドレスですか? – EJP
イーサネットIPアドレスはユーザコマンドによって変更されるため、ユーザは、IPが変更された直後に、新しいIPアドレスでアプリケーションを再起動する必要があります。 –
保留中のSend-Qパケットを破棄して、この孤立したソケットを閉じる時間を調べるにはどうすればよいですか? –