0

ここで少し混乱しています。通常、Windows telnet を単純なエコー サーバーに接続すると、すべてのキーストロークがエコーされます。

現在、何らかの理由でそれらのいくつかをスタックしてサーバーに送信しています。これは正常な動作ですか?この奇妙な矛盾には何か理由があるのでしょうか?

例:

クライアント:

>>blahblahblah

>>

エコー サーバー:

I recieved "b"
I recieved "lahbl"
I recieved "ahbla"
I recieved "h\r\n"
4

2 に答える 2

1

それは両側のバッファリングに依存します。クライアントは、行末が使用可能な文字を送信するのを待ちます。エコーサーバーは読み取りますが、読み取りは利用可能なものを取得します。ネットワークとバッファリングのランダム性に応じて、これは1文字から送信したすべての文字までのいずれかになります。

TCPを使用すると、すべてがそこに到達することが保証されますが、必ずしも同時に、または送信したのと同じチャンクであるとは限りません。

于 2012-09-11T02:40:29.537 に答える
1

私はかなり前向きです、これはあなたのタイピング速度に依存します。

このようなインタラクティブなクライアントを作成する場合、人間にとっては瞬時であるが、実際にはコンピューターにとっては長い時間間隔まで、キーストロークをキューに入れます。バッファがいっぱいになった場合(実際には高速タイピング-おそらくリダイレ​​クトされた入力)、または上記のタイムアウトが発生した後に、送信操作を開始します。

そうすることで、各パケットでより大きなペイロードを送信することでフェルトレイテンシーを減らすことができます。したがって、フェルトレイテンシーを1 / nに減らし、nはパケット内の平均キーストローク数です。プラスの副作用として、これによりネットワークリソースの使用が(わずかに)向上します。

私の仮説を検証するには、クリップボードを使用して、長いテキストをTelnetクライアントに貼り付けます。

于 2012-09-11T02:40:47.460 に答える